打开 XML 删除 MS Word 表格行损坏图像

问题描述

我正在尝试删除 MS Word 文档表中的某些行。下表是处理前的样子:

enter image description here

我分析了这个表以了解开放的 XML 表示,下面是 InnerText 属性的制定方式:

项目 说明 null
教室 empty 互动课堂...
empty empty 案例研究教室...
empty empty 礼堂讲座教室...
计算机 empty 大型计算机...
empty empty 超级计算机...
empty empty 工作站计算机...

间的 empty 列是插入图像的位置。图片和描述位于两个不同的单元格中,它们之间有一个不可见的边框。

以下是删除“案例研究教室”、“超级计算机”、“工作站计算机”、“个人计算机”和“平板电脑”项的代码

var itemsToBeExcluded = new List<string>{"Case Study Classrooms","Supercomputer","Workstation Computer","Personal Computer","Tablet"};

using (MemoryStream stream = new MemoryStream())
{
    //pageData is a byte[] to represent the word file
    stream.Write(pageData,(int)pageData.Length);
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(stream,true))
    {
        var table = wordDoc.MainDocumentPart.Document.Body.OfType<Table>().FirstOrDefault();
        int rowCount = 0;
        string firstColumnInnerXml = string.Empty;

        for (int t = 0; t<table.ChildElements.Count; t++)
        {
            if(table.ChildElements[t] is TableRow)
            {
                // Skip the header
                if (rowCount++ != 0)
                {
                    // Gets the inner xml of first column of the table and set if it is null for the subsequent rows
                    if (table.ChildElements[t].ChildElements[1].InnerText.Length > 0) 
                    {
                        firstColumnInnerXml = table.ChildElements[t].ChildElements[1].InnerXml;
                    }
                    else
                    {
                        table.ChildElements[t].ChildElements[1].InnerXml = firstColumnInnerXml;
                    }
                    
                    foreach (var removableItem in itemsToBeExcluded)
                    {
                        if (table.ChildElements[t].ChildElements[3].InnerText.ToLower().StartsWith(removableItem.ToLower()))
                        {
                            table.ChildElements[t].Remove();
                            t--;
                            goto OUTERCONTINUE;
                        }
                    }
                    OUTERCONTINUE:;
                }
            }
        }
        wordDoc.MainDocumentPart.Document.Save();
        wordDoc.Close();
    }
}

但是在执行之后,我得到的是以下内容

enter image description here

很明显,图像丢失了,尽管我只删除了必要的行,但不相关行中的图像似乎也已损坏/删除。有人可以解释为什么会发生这种情况以及如何解决这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...