C#从Word文档复制表格并将其添加到另一个Word文档

时间:2019-11-05 10:12:37

标签: c# ms-word openxml-sdk clonenode openxml-table

我想从MS Word文档中获取一个表格,然后将该表格以所有格式添加到另一个文档中。我正在使用OOXML来做到这一点。为了标识特定的表,我分配了“替代文本->标题”,并且能够从源文档中获取表及其内容。我已经在目标文档中添加了一个表格,其中包含特定的“替代文字->标题,并且还可以获取它。

我已使用以下代码将表添加到目标文档。但是,当我打开目标文档时,它会显示MS Word错误消息。

MS Word错误->“文件已损坏,无法打开。”

当我针对此错误单击“确定”时,它显示消息“ Word在.docx中发现了不可读的内容。您要恢复此文档的内容吗?如果您信任此文档的来源,请单击“是”。当我单击“是”时。

它显示带有表格及其所有格式的目标文档。

如何删除此错误/警告消息?我在错误代码中导致此错误的原因是什么?

注意::我正在尝试复制的表带有一些带有 Hyperlink 的文本,这引起了问题。如果我删除超链接,它将正常工作。

TableProperties tableProperty = sourceDocument.Document.Body.Descendants<TableProperties>().Where(tp => tp.TableCaption != null && tp.TableCaption.Val.InnerText.Contains("sourceTable")).FirstOrDefault();

TableProperties destTableProperty = destinationDocument.Document.Body.Descendants<TableProperties>().Where(tp => tp.TableCaption != null && tp.TableCaption.Val.InnerText.Contains("destinationTable")).FirstOrDefault();

sourceTable = (Table)tableProperty.Parent;
destinationTable = (Table)destTableProperty.Parent;
destinationTable.InsertBeforeSelf<Table>((Table)sourceTable.CloneNode(true));
destinationTable.Remove();

1 个答案:

答案 0 :(得分:0)

这个问题能够将一个表从一个Word文档复制到另一个Word文档,并且上述代码可以很好地实现相同目的。

有关文档损坏的警告/错误消息的原因是由于表文本中的超链接。如果我删除超链接,它将正常工作。

对于超链接问题,我将发布单独的问题并关闭该问题。