2016-12-13 72 views
0

获得了一个旧模块,该模块使用sparx ea项目中的数据生成报表。Spax EA将图表导出为Word文档的最佳方式

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

现在它看起来像

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格式获取图形图?

什么方式更好?

+0

为什么通过文件工作,如果你可以通过剪贴板做同样的内存?这种方法没有任何问题。 –

+0

@ThomasKilian好,在我的情况下,剪贴板的问题出现在这里(问题下的第一条评论)http://stackoverflow.com/questions/41055211/task-run-from-ui-thread-throws-sta-error – DanilGholtsman

+0

@ ThomasKilian这就是为什么我想减少代码中的所有剪贴板调用我与 – DanilGholtsman

回答

3

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

/// <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; 
    } 
} 
+0

做同样的事情哇,先生, 。贝尔肯斯(看到你的关于EA的许多动画):) 感谢您的回答,正是我需要的! – DanilGholtsman

+0

那么,嗨,再次,使用此代码,但有一个问题。所有图表看起来像这样http://i.imgur.com/mw4m1gD.png – DanilGholtsman

+0

在项目中有演员和用例和东西,但它不出现在图片 – DanilGholtsman

相关问题