用C#转换Word或Excel文档为Html文件

时间:2022-11-11 22:03:10

这个是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

作者编写了两个类DocToHtmlXlsToHtml用以转换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后就不报异常了。

 

修改后的代码下载地址如下:点击下载