Spax EA 将图表导出到 Word 文档的最佳方式

Spax EA best way to export diagrams into Word document

得到一个旧模块,该模块使用来自 sparx ea 项目的数据生成报告。

文档中有部分需要插入图表作为图片。

现在看起来像那样

 public static void copyDiagram(
            EA.Diagram diagram,
            EA.Repository eaRepository)
        {
            eaRepository.App.Project.PutDiagramImageOnClipboard(diagram.DiagramGUID, 0);
            eaRepository.CloseDiagram(diagram.DiagramID);
        }

将其复制到剪贴板,然后出现类似 currentDocumentRange.Paste()

我觉得很奇怪。 我觉得这样用剪贴板不太好,所以我想以后重写它。

所以,只有我在那里找到的其他函数看起来像那样 PutDiagramImageToFile(diagrammGUID, path, type)

如果没有更好的选择,可以新建一个文件,然后通过路径获取文件插入到word文档中,然后删除吗?

或者,也许还有一些其他的 SparxEA 函数,可以从图表中以 byte[] 格式或类似 Image 格式获取图像?

哪种方式比较好?

我正在使用此代码(在图表包装器 class 上)获取图表图像,而无需使用剪贴板。
此代码主要用于自定义书面文档生成器,并且速度惊人。

/// <summary>
/// returns diagram image
/// </summary>
public Image image
{
    get 
    {
        EA.Project projectInterface = this.model.getWrappedModel().GetProjectInterface();
        string diagramGUID = projectInterface.GUIDtoXML(this.wrappedDiagram.DiagramGUID);
        string filename = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".png";
        //save diagram image to file (format ".png")
        projectInterface.PutDiagramImageToFile(diagramGUID, filename, 1);
        //load the contents of the file into a memorystream
        MemoryStream imageStream = new MemoryStream(File.ReadAllBytes(filename));
        //then create the image from the memorystream.
        //this allows us to delete the temporary file right after loading it.
        //When using Image.FromFile the file would have been locked for the lifetime of the Image
        Image diagramImage = Image.FromStream(imageStream);
        //delete the temorary file
        System.IO.File.Delete(filename);

        return diagramImage;
    }
}