将图表从一个docx复制到另一个

时间:2020-04-20 17:47:29

标签: c# ms-word openxml

我创建了一个报告实用程序。为此,我创建了一个带有占位符和预格式化等的模板文件。

我打开模板文件并替换内容,然后将数据添加到图表(using this)并使用其他名称保存文档。我的工具为不同部门创建10-15个文件。为了创建摘要,我需要复制单个文档中每个文档的图表。

我可以使用以下代码将图表复制到另一个文档:

public void WriteChartParts(MainDocumentPart sourcePart,
                            MainDocumentPart destnPart)
{
  var paras = sourcePart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Run>();
  var drawingElements = from run in paras
                        where run.Descendants<Drawing>().Count() != 0
                        select run.Descendants<Drawing>().First();

  sourcePart.ChartParts.ToList().ForEach (chartPart =>
                               {
                                 destnPart.AddPart<ChartPart>(chartPart, sourcePart.GetIdOfPart(chartPart));
                               });

  drawingElements.ToList().ForEach(drw =>
                         {
                           destnPart.Document.Body.Append((drw as OpenXmlElement).Clone() as OpenXmlElement);
                         });
  destnPart.Document.Save();
}

它可以将一个图表复制到另一文档。但是,一旦复制了第二张图表,该文档就会损坏。我猜每个文档中的关系ID都是相同的,因为它们是从一个源文档创建的(仅更新了数据)。

如何将整个图表部分从一个文档复制到另一个文档并更改所有ID。

0 个答案:

没有答案