在读取 excel 文件时检索具有 CLSID 的组件的 COM class 工厂
Retrieving the COM class factory for component with CLSID on excel file reading
我有一个 asp.net 项目读取 excel 文件并使用 Microsoft excel 16 对象库 和 Microsoft office 16 对象库 ..在开发机器上一切都很好,我可以读取数据......但是在我发布网站并将其上传到 somee.com 之后免费托管...我上传 excel 的部分运行良好,但在读取数据部分我遇到了这个错误
System.Runtime.InteropServices.COMException: Retrieving the COM class
factory for component with CLSID
{00024500-0000-0000-C000-000000000046} failed due to the following
error: 80040154 Class not registered (Exception from HRESULT:
0x80040154 (REGDB_E_CLASSNOTREG)).
我搜索了原因,我认为问题是关于 excel 主机可能不支持的库或类似的东西......如果你能帮我弄清楚,谢谢你。
您违反了办公自动化的基本规则 -- 不要在服务器上这样做。期间.
可以在服务器上安装 Office,甚至可以手动注册一些东西以使其在测试时足以让您的 Web 应用程序运行一次或两次。但是一旦该应用程序被转移到生产环境中,它就会开始失败——持续或间歇性地——甚至可能导致您的 Web 应用程序完全挂起。 Office 是一组应用程序,而不是一组数据操作库。关于它的一切都被设计得好像用户是 运行 它来自交互式会话 - 它为很多操作创建 windows,并且它本质上是 multi-process。您的服务器是 运行 在 non-interactive 会话中,在这种情况下 window 管理的规则是不同的。确实没有办法使服务器应用程序中的 Office 自动化安全,尤其是托管多个 applications/sites and/or 的服务器是 high-traffic.
执行此操作的 "correct" 方法是使用将 Office 文档纯粹视为数据结构的库。执行此操作的库可以在不调用 Office 的情况下读取和操作文档中的数据。一个类比是 XML 文档——你使用像 .NET 的 XmlDocument
或 XDocument
这样的 XML API 从文件中读取数据,在内存中操作它,然后将其存储回磁盘。这与尝试自动化用户将使用某些可视化 XML 编辑器应用程序执行的操作有很大不同。
我建议您查看 Open XML SDK,Microsft 专门为此目的提供的一个库。所有 Office 2007+ 文档都以名为 Open XML 的开放格式存储。该库是围绕该文件格式的规范进行编码的。
我有一个 asp.net 项目读取 excel 文件并使用 Microsoft excel 16 对象库 和 Microsoft office 16 对象库 ..在开发机器上一切都很好,我可以读取数据......但是在我发布网站并将其上传到 somee.com 之后免费托管...我上传 excel 的部分运行良好,但在读取数据部分我遇到了这个错误
System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
我搜索了原因,我认为问题是关于 excel 主机可能不支持的库或类似的东西......如果你能帮我弄清楚,谢谢你。
您违反了办公自动化的基本规则 -- 不要在服务器上这样做。期间.
可以在服务器上安装 Office,甚至可以手动注册一些东西以使其在测试时足以让您的 Web 应用程序运行一次或两次。但是一旦该应用程序被转移到生产环境中,它就会开始失败——持续或间歇性地——甚至可能导致您的 Web 应用程序完全挂起。 Office 是一组应用程序,而不是一组数据操作库。关于它的一切都被设计得好像用户是 运行 它来自交互式会话 - 它为很多操作创建 windows,并且它本质上是 multi-process。您的服务器是 运行 在 non-interactive 会话中,在这种情况下 window 管理的规则是不同的。确实没有办法使服务器应用程序中的 Office 自动化安全,尤其是托管多个 applications/sites and/or 的服务器是 high-traffic.
执行此操作的 "correct" 方法是使用将 Office 文档纯粹视为数据结构的库。执行此操作的库可以在不调用 Office 的情况下读取和操作文档中的数据。一个类比是 XML 文档——你使用像 .NET 的 XmlDocument
或 XDocument
这样的 XML API 从文件中读取数据,在内存中操作它,然后将其存储回磁盘。这与尝试自动化用户将使用某些可视化 XML 编辑器应用程序执行的操作有很大不同。
我建议您查看 Open XML SDK,Microsft 专门为此目的提供的一个库。所有 Office 2007+ 文档都以名为 Open XML 的开放格式存储。该库是围绕该文件格式的规范进行编码的。