之前用到了word轉換成HTMl的做法,網上找過一段類似的代碼,後發現好多不能執行,調試了半天才最終搞定。
方法接參數是word檔案路徑。 執行這樣的代碼,需要添加 Microsoft.Office.Interop.Word.dll引用。
/// <summary>
/// Word轉換為HTML
/// </summary>
/// <param name="path"></param>
private string WordToHTMl(ref string path)
{
string pageUrl = null;
object fltDocFormat = 10; //For filtered HTML Output
object missing = System.Reflection.Missing.Value;
object readOnly = false; //Open file in readOnly mode
object isVisible = false;//The process has to be in invisible mode
object fileName = path;
//擷取網站伺服器端的路徑
string newPath = System.Web.HttpContext.Current.Server.MapPath("/ConvertFiles/");
string newFileName = System.IO.Path.GetFileNameWithoutExtension(fileName.ToString());
object saveFileName = newPath + savePath + newFileName + ".html";
//判斷檔案是否被轉換
if (!System.IO.File.Exists(SaveFileName))
{
Microsoft.Office.Interop.Word.ApplicationClass objWord = new Microsoft.Office.Interop.Word.ApplicationClass();
//開啟word文檔
objWord.Documents.Open(ref fileName, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing, ref missing);
//Do the background activity
objWord.Visible = false;
Microsoft.Office.Interop.Word.Document oDoc = objWord.ActiveDocument;
oDoc.SaveAs(ref saveFileName, ref fltDocFormat, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
oDoc.Close(ref missing, ref missing, ref missing);
objWord.Quit(ref missing, ref missing, ref missing);
//Process[] myProcesses = Process.GetProcessesByName("WINWORD");
//foreach (Process myProcess in myProcesses)
//{
// myProcess.Kill();
//}
// string pageUrl = newFileName + ".html";
// System.Web.HttpContext.Current.Server.Transfer(pageUrl);
}
else
{
//頁面路徑
pageUrl = IpPath + FileName + ".html";
}
return pageUrl;
}