我创建了一个报告实用程序。为此,我创建了一个带有占位符和预格式化等的模板文件。
我打开模板文件并替换内容,然后将数据添加到图表(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。