如何解决打开 XML 删除 MS Word 表格行损坏图像
我正在尝试删除 MS Word 文档表中的某些行。下表是处理前的样子:
我分析了这个表以了解开放的 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();
}
}
但是在执行之后,我得到的是以下内容:
很明显,图像丢失了,尽管我只删除了必要的行,但不相关行中的图像似乎也已损坏/删除。有人可以解释为什么会发生这种情况以及如何解决这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。