这个是CodeProject上的一篇文章:Microsoft Interop API to convert the .doc, .docx, .dot, .dotx and .xls,.xlsx, .rtf to HTML。该文介绍了一种通过Microsoft office Interop library转换word或excel文档为html的方法,这里转录一下,以供更多需要的人参考。
要使用Microsoft office Interop library库,首先得在电脑上安装Office,然后添加如下三个com组件的引用:
-
Microsoft Office Excel library.
-
Microsoft Office Word library
-
Microsoft Office object library
作者编写了两个类DocToHtml和XlsToHtml用以转换Word和Excel文档,
public static IConverter Converter(string fullFilePath, string fileToSave)
{
switch (Path.GetExtension(fullFilePath).ToLower())
{
case ".doc":
case ".docx":
case ".dot":
case ".dotx":
case ".rtf":
return new DocToHtml { FileToSave = fileToSave, FullFilePath = fullFilePath };
case ".xls":
case ".xlsx":
return new XlsToHtml { FileToSave = fileToSave, FullFilePath = fullFilePath };
default:
throw new NotSupportedException();
}
}
使用方法如下:
static void Main(string[] args)
{
var converter = ConverterLocator.Converter(@"r:\1.xlsx", @"r:\1.html");
var html = converter.Convert();
}
原文提供了代码的下载,使用了一下,觉得有两个问题:
1. 该代码转换后会删除原始文件,并且也不会保留转换后的文件,仅仅返回string类型的html。
转换后删除原始文件是不对的,并且string类型的html文件有并不能完全代表结果(很多时候还有一些图片或样式表之类的附加文件)。因此我把代码修改了一下,不删除原始文件和转换后的文件。
2. 转换带图片的文档时会报异常
分析了一下,转换带图片的文档后,会生成一个xxx.files的文件夹用以存放文档,但是作者的代码中是xxx_files文件夹(可能是操作系统或office的版本不一样所致),我这里改成了xxx.files后就不报异常了。
修改后的代码下载地址如下:点击下载。