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

标签 c# excel ms-word openxml

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

enter image description here

我现在想将此图表嵌入到Word文档中,以便在发送这些报告时,可以根据需要编辑图表(不是外部链接)。

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

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

干杯, 邓肯。

最佳答案

我终于弄清楚了!

步骤:

  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);
    
  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();
        }
    }
    
  5. 然后我可以将内联绘图插入引用图表部分的 Word 文档中。

关于C# OpenXML 在 Word 文档中嵌入电子表格图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52826599/

相关文章:

c# - 为什么 C# 将所有方法和类型标记为 System.Runtime.InteropServices.Charset.Ansi?

c# - SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为 : 5. 5.1 需要身份验证。

excel - Dir() 对返回的文件的顺序有任何保证吗?

excel - 27位二进制到十进制转换

Emacs - 如何避免或替换错误的字符编码?

c# - Active Directory PrincipalContext.ValidateCredentials 域消歧

c# - 从 WinRT 中的线程更新 UI

java - 如何使用Java POI读取Word文档书签?

arrays - 打乱数组,以便没有项目保留在同一位置

c# - 如何在word 2003文档的开头插入空白页