之前用到了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;
}