【问题标题】:How do I access Microsoft Excel 365 using C# in Visual Studio如何在 Visual Studio 中使用 C# 访问 Microsoft Excel 365
【发布时间】:2017-03-20 05:09:51
【问题描述】:

我创建了一个可以读取 Excel 电子表格并对数据执行操作的应用。我使用 Excel 2010 和 2013 创建了该应用程序。我的公司最近使用了 Office 365。现在当我运行我的应用程序时,我收到下面列出的错误。我认为这与 Microsoft.Office.Interop.Excel 有关,但我找不到有关此错误以及如何修复它的任何信息。

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

【问题讨论】:

  • 也许您应该更新您的 Office 开发人员工具。
  • #mcNets -- 我安装了最新的 Office 开发人员工具,你知道 Office 365 工具在哪里吗?

标签: c# office365 excel-2016


【解决方案1】:

如果你不需要控制 excel 应用程序本身,你真的不需要互操作。请参阅this questionthis 的答案,了解如何从 xlsx 表格中读取数据。还有一个neat article on codeproject,解释了OleDb。

【讨论】:

  • #Nomenator -- 你有使用这些选项的经验吗?你推荐哪个,Linq-to_Excel 或 OleDbConnection?
  • @Cass 我使用 Linq-to-Excel 是因为它允许我在将文件映射到实体后查询 excel 文件,就好像它是实体框架数据源一样。我不知道它在幕后有多快或多慢,但是直接将数据与对象交互并使用 linq 的舒适性使得开发速度更快。
  • #Nomenator -- Linq-to-Excel 是否仅适用于 .xls 文件,您知道吗?我有一个 xlsx 文件,我收到此错误:“无法加载文件或程序集‘LinqToExcel,版本=1.10.1.0,文化=中性,PublicKeyToken=9c8ea65a58f03f1f’或其依赖项之一。尝试加载程序格式不正确。”
  • @Cass 绝对适用于 xlsx。您在那里看到的是程序集不可访问。也许nuget包的内容没有下载,也许你的项目设置中的依赖指向了错误的路径,或者它使用的库没有安装。如果您尝试加载不兼容的文件,则会出现不同的错误。这篇文章在这里:johnatten.com/2013/09/25/… 详细展示了如何使用。
  • #Nomenator -- 在这些示例中,看起来一切都基于列名。你有没有做过任何你指定一个范围的事情,比如 B8:U1023,来读取数据?创建我的应用程序后,用户可以选择一个 Excel 文档,必要时选择一个特定范围,然后代码将删除所有不可打印的字符并创建一个竖线分隔的文本文件。
【解决方案2】:

当我的计算机升级到 Office 365 时,我遇到了完全相同的异常。在我的 C# 代码中,我之前使用了存储在“.xlsx”文件中的测试数据。

我将 excel 文件名切换为“.xls”并运行利用 Excel.Application 和 Microsoft.Office.Interop.Excel 库中的其他类的相同代码,它运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2018-11-09
    • 2020-08-02
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多