V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mrkon
V2EX  ›  C#

C#如何删除 word 中的超链接?

  •  
  •   Mrkon · 2020-03-13 10:57:30 +08:00 · 7939 次点击
    这是一个创建于 1748 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,所用插件为 Microsoft.Office.Interop.Word;

    如果是删除所有超链接比较好解决,可以直接使用 doc.Hyperlinks.get_Item(ref index).Delete(); 但是如果想删除对应文本的超链接该如何做呢?
    4 条回复    2020-03-13 21:23:29 +08:00
    yicong135
        1
    yicong135  
       2020-03-13 12:02:36 +08:00 via Android   ❤️ 1
    解析 word 文档,然后找到链接删除
    Mrkon
        2
    Mrkon  
    OP
       2020-03-13 12:17:50 +08:00
    @yicong135 该如何定位这段文本中的超链接呢?我想删除的是 word table 中一列里面的所有超链接。可以直接使用现成的函数吗?还是说必须要将 word 解析为 xml 进行处理呢?
    crazytudou
        3
    crazytudou  
       2020-03-13 17:55:26 +08:00   ❤️ 1
    没用过 Microsoft.Office.Interop.Word (会受运行系统上 office 影响),都是用 NPOI (脱离 office )
    先取得 Table tr td,再得到每个列内容有多段落( Paragraphs ),再判断是否网址,是就替换成空字符串
    XWPFDocument doc = new XWPFDocument(stream); //docx
    var tables = doc.Tables;
    foreach (var table in tables)
    {
    foreach (var row in table.Rows)
    {
    foreach (var cell in row.GetTableCells())
    {
    foreach (var para in cell.Paragraphs)
    {
    //para.Text
    //判断是否网址,是就替换成空字符串
    }
    }
    }
    }
    Mrkon
        4
    Mrkon  
    OP
       2020-03-13 21:23:29 +08:00
    @crazytudou 解决了,十分感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5263 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:12 · PVG 16:12 · LAX 00:12 · JFK 03:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.