C#将.doc转换为.htm

我试图将.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未注册类(HRESULTexception:0x80040154(REGDB_E_CLASSNOTREG))。

在线:

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

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

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

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

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

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

有关详细信息, 请查看此