如何动态地在visio文件中添加模板(c#)

本文关键字:添加 文件 何动态 动态 visio | 更新日期: 2023-09-27 18:15:38

我有一个Visio文档和一个Stencil(.vss)文件。需求:动态地在Visio文档中添加这个模板文件。

    private static void InsertStencilsToVisio()
    {           
        string fileName = @"C:'Visio Files'TestVisio.vdw";
        if (System.IO.File.Exists(fileName))
        {
            visioDocument = visioApplication.Documents.Open(fileName);
            visioPage = visioApplication.Window.Application.ActivePage;
            eswStencilDocument = visioPage.Application.Documents["eswstencil.vss"];
            CreateShapes();
        }
    }

我可以使用VisOpenSaveArgs吗?

如何动态地在visio文件中添加模板(c#)

是的,你可以使用visOpenRO + visOpenDocked:

visioDocument = visioApplication.Documents.Open(fileName);
visioApplication.Documents.OpenEx("eswstencil.vss", 
    (short)VisOpenSaveArgs.visOpenRO|(short)VisOpenSaveArgs.visOpenDocked);

自己破解的。在这里,我打开了Visio文档,并在打开Visio时动态地将模板停靠在Visio上。后来的文档保存与模板。

   private static void InsertStencilsToVisio()
   {   visioApplication = new Application();
        string fileName = @"C:'siva'CreateGen1Visio'pd-m-0001_1.11.vdw";
        string stencilFileName = @"C:'siva'CreateGen1Visio'eswstencil.vss";
        try
        {
            if (System.IO.File.Exists(fileName))
            {
                visioDocument = visioApplication.Documents.OpenEx(fileName, (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDontList);
                visioPage = visioDocument.Application.ActivePage;
                visioPage.Application.Documents.OpenEx(stencilFileName, (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
                visioDocument.SaveAsEx(fileName, (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visSaveAsWS);
            }
        }
   }