C#将.doc转换为.htm

时间:2011-05-01 18:43:08

标签: c# ms-word ms-office

我正在尝试将.doc文件转换为.htm格式,以便在ASP.NET MVC页面中查看。

我在C#中使用以下代码:

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;

....

Microsoft.Office.Interop.Word.Application objWord = new Microsoft.Office.Interop.Word.Application();

            object source = @"C:\Users\XYZ\Desktop\ScreenShot.doc";
            object target = @"C:\Users\XYZ\Desktop\ScreenShot.html";
            object unknown = Type.Missing;
            objWord.Documents.Open(ref source, ref unknown,
                 ref unknown, ref unknown, ref unknown,
                 ref unknown, ref unknown, ref unknown,
                 ref unknown, ref unknown, ref unknown,
                 ref unknown, ref unknown, ref unknown, ref unknown);

            object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatRTF;
            objWord.ActiveDocument.SaveAs(ref target, ref format,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown);

我试图谷歌将.doc(甚至.ppt)转换为.htm格式的方法,并且总是找到与上述类似的代码。

但我一直得到这个例外:

  

由于以下错误,检索CLSID为{000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

在这一行:

Microsoft.Office.Interop.Word.Application objWord = new Microsoft.Office.Interop.Word.Application();

这是因为我安装了Word Starter 2010而不是完整的Office 2010,还是有其他解决方案呢?

2 个答案:

答案 0 :(得分:2)

在服务器端使用MS Office中的COM对象并不是一个好主意。第一个问题是技术问题 - 进程有几个陷阱(即有时excel / word在调用Quit()后不会退出)。这并不容易,但它是可以解决的。

然而,第二个问题是许可。您需要为将使用MS Office的每个用户颁发许可证。因此,如果您想在互联网上使用它,您将面临严重的财务问题。

有几个库可以打开(保存,转换等)MS Office格式而无需安装MS Office。我曾在Aspose库工作过一次,但还有其他几个。

答案 1 :(得分:1)

您遇到此异常,因为COM对象未配置为允许对aspnet用户标识的启动和访问权限。 最好将应用程序池标识用户更改为“网络服务”,它具有足够的权限来执行COM +组件。

有关详细信息check this