使用微软的office中的word软件只要使用另存为就可以把一个word保存为HTML网页文件。但如何通过程序调用完成转化呢?
以下使用office 2007为例,其他版本略有不同。
1添加引用,对于不同的版本,有所不一样。当然前提自然是安装了对应的微软office软件。
2转换代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word=Microsoft.Office.Interop.Word;
namespace CommonConvert
{
public class WordToHtml
{
/// <summary>
/// 使用反射调用方法,返回生成的HTML文件路径
/// </summary>
/// <param name="wordFullFileName"></param>
/// <returns></returns>
public string WordToHtmlFile(string wordFullFileName)
{
//在此处放置用户代码以初始化页面
Word.Application word = new Word.Application();
Type wordType = word.GetType();
Word.Documents docs = word.Documents;
//打开文件
Type docsType = docs.GetType();
Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFullFileName, true, true });
Type docType = doc.GetType();
string htmlFullFileName = wordFullFileName + ".html"; //HTML文件路径
//转换格式,另存为
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { htmlFullFileName, Word.WdSaveFormat.wdFormatFilteredHTML });
docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
//退出 Word
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
return htmlFullFileName;
}
/// <summary>
/// 直接调用方法,不使用反射
/// </summary>
/// <param name="wordFullFileName"></param>
/// <returns></returns>
public string WordToHtmlFile2(string wordFullFileName)
{
//在此处放置用户代码以初始化页面
Word.Application word = new Word.Application();
Word.Documents docs = word.Documents;
//打开文件
// Type docsType = docs.GetType();
//Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFullFileName, true, true });
object owordFullFileName = wordFullFileName;
Word.Document doc = docs.Open(ref owordFullFileName);
//转换格式,另存为
string htmlFullFileName = wordFullFileName + ".html"; //HTML文件路径
doc.SaveAs(htmlFullFileName, Word.WdSaveFormat.wdFormatFilteredHTML);
doc.Close();
//退出 Word
word.Quit();
return htmlFullFileName.ToString();
}
}
}
参考文章