【问题标题】:C# convert .doc to .htmC# 将 .doc 转换为 .htm
【发布时间】:2011-05-01 18:43:07
【问题描述】:

我正在尝试将 .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,还是有其他解决方案?

【问题讨论】:

标签: c# ms-word ms-office


【解决方案1】:

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

但是,第二个问题是许可。您需要为每个将使用 MS Office 的用户提供许可证。所以,如果你想在互联网上使用它,你会遇到严重的财务问题。

有几个库可以在没有安装 MS Office 的情况下打开(保存、转换等)MS Office 格式。我曾经使用过Aspose 库,但还有其他几个。

【讨论】:

    【解决方案2】:

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

    更多详情check this

    【讨论】:

    • 能否请您解释一下应用程序池标识是如何更改的?
    • 从运行 --> 输入 inetmgr,这将打开 IIS 管理器,选择附加到您网站的应用程序池,然后从操作菜单中选择高级设置,然后使用身份选项更改用户。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    相关资源
    最近更新 更多