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