將Visio檔案裝換成HTML檔案(在伺服器上轉換,用戶端無需安裝visio即可查看)

來源:互聯網
上載者:User

需求見我的前一篇文章:類似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程式開啟的時候不顯示,在後台開啟,我寫的代碼無論如何都會閃一下,謝謝!。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.