将Visio文件装换成HTML文件(在服务器上转换,客户端无需安装visio即可查看)...

需求见我的前一篇文章:类似QQ邮箱中‘HTML方式查看’功能查看Office文件

当时是直接写的一个方法,支持word、excel、ppt文件,现在写visio文件,则改成了单例模式。

废话不说,上代码: 

public   class  VisioApplication
{
    
private   static   readonly   object  sync  =   new   object ();
    
private   static  Microsoft.Office.Interop.Visio.Application vso;
    
private  VisioApplication() { }

    
public   static  Microsoft.Office.Interop.Visio.Application GetInstance()
    {
        
// 单例模式,双重锁定
         if  (vso  ==   null )
        {
            
lock  (sync)
            {
                
if  (vso  ==   null )
                {
                    vso 
=   new  Microsoft.Office.Interop.Visio.Application();
                    vso.Visible 
=   false ; // 打开应用程序就隐藏
                    vso.AlertResponse  =  ( short ) 1 ; // 重要:转换时不用打开确认窗口,直接转换
                }
            }
        }
        
return  vso;
    }

    
public   static   void  Quit()
    {

        
if  (vso  !=   null )
        {
            vso.Quit();
        }
        GC.Collect();
    }

    
///   <summary>
    
///  将Visio文档转换成HTML格式
    
///   </summary>
    
///   <param name="VisioFilePath"></param>
     public   static   void  VisioToHtmlFile( string  VisioFilePath)
    {
        Microsoft.Office.Interop.Visio.Application vso 
=  GetInstance();
        Microsoft.Office.Interop.Visio.Document doc 
=   null ;
        Microsoft.Office.Interop.Visio.SaveAsWeb.VisSaveAsWeb saveAsWeb;
        Microsoft.Office.Interop.Visio.SaveAsWeb.VisWebPageSettings webPageSettings;
        
try
        {
            
// 设置输出文件路径
             string  strTarget  =  VisioFilePath.Substring( 0 , VisioFilePath.LastIndexOf( " . " ))  +   " .html " ;
            
// 打开文档,本来想后台打开,但是无论如何都会闪一下,看大家有没有什么好的办法
            doc  =  vso.Documents.OpenEx(VisioFilePath,
                (
short )Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenRO
                
+  ( short )Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenMinimized
                
+  ( short )Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenHidden
                
+  ( short )Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenNoWorkspace);
            
// 获得转换html文件用的对象
            saveAsWeb  =  (Microsoft.Office.Interop.Visio.SaveAsWeb.VisSaveAsWeb)vso.SaveAsWebObject;
            
// 设置格式
            webPageSettings  =  (Microsoft.Office.Interop.Visio.SaveAsWeb.VisWebPageSettings)saveAsWeb.WebPageSettings;
            webPageSettings.TargetPath 
=  strTarget;
            webPageSettings.QuietMode 
=   1 ;
            webPageSettings.SilentMode 
=   1 ; // 安静模式,不然会显示转换进度窗口

            saveAsWeb.AttachToVisioDoc(doc);
// 将文档添加到需要转换的列表中
            saveAsWeb.CreatePages(); // 开始转换
        }
        
finally
        {
            
if  (doc  !=   null )
            {
                doc.Close();
            }
        }
    }
}
本例子代码在VS2008、Office Visio 2007下测试通过,使用前需引用 相应的com组件
放在首页的原因是:希望大家帮个忙!如何让visio程序打开的时候不显示,在后台打开,我写的代码无论如何都会闪一下,谢谢!。

转载于:https://www.cnblogs.com/zellzhang/archive/2009/05/22/1486971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值