C# OpenXML 在 Word 文档中嵌入电子表格图表

Dun*_*mer 6 c# excel ms-word openxml

我使用 C# OpenXML 生成了一个包含数据和基于数据的图表的电子表格。

在此处输入图片说明

我现在想把这个图表嵌入到一个 word 文档中,这样当这些报告发出时,如果需要,可以编辑图表(不是外部链接)。

我已经环顾了几个小时,但找不到任何一致的文档来实现这一目标。大多数潜在客户似乎都在谈论“EmbeddedPackageParts”。

如果有人有任何有用的文章或可以提供一些清晰度,将不胜感激。

干杯,邓肯。

Dun*_*mer 2

我最终弄清楚了这一点!

脚步:

  1. 生成 xlsx 文件,其中包含我的数据。

  2. 将xlsx文件保存到本地

  3. 在我的Word文档中创建一个新的图表部分并生成图表内容

    ChartPart wordChartPart = document.MainDocumentPart.AddNewPart<ChartPart>();
    string wordChartId = document.MainDocumentPart.GetIdOfPart(wordChartPart);
    WordDocumentBuilder.Workflows.SpreadsheetUtils.GenerateBarChartPart(wordChartPart, categories, dataRows);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将电子表格嵌入到 ChartPart 中

    EmbeddedPackagePart embeddedObjectPart = wordChartPart.AddEmbeddedPackagePart(@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    
    using (FileStream stream = new FileStream(file, FileMode.Open))
    {
        byte[] documentBytes = new byte[stream.Length];
    
        stream.Read(documentBytes, 0, documentBytes.Length);
    
        using (BinaryWriter writer = new BinaryWriter(embeddedObjectPart.GetStream()))
        {
            writer.Write(documentBytes);
            writer.Flush();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 然后,我可以将内联绘图插入引用图表部分的 Word 文档中。