使用 C# .NET 查询 Excel 电子表格,而不使用 Jet OLE DB

2024-03-24

有没有办法查询 Excel 2010 电子表格,而不使用 Jet 或导出为 CSV 并查询 csv 文件。

我无法使用 Jet 的原因是该应用程序需要在 Windows Server 2008 R2 上作为 Web 服务运行,没有 32 位支持 - 因此 Jet 将无法工作。这是给定的,因为目标服务器上未安装 WOW 64。

这个线程 https://stackoverflow.com/questions/400684/querying-jet-databases-excel-files-with-c-under-x64-os建议使用 32 位代理机器,但这也不是一个选择。

进一步信息:服务器正在运行 Sharepoint 2010。

Thanks,

JD


是的 - 您可以使用 Excel.Interop - 通过在 VS 添加引用对话框的 .Net 选项卡中添加对 Microsoft.Office.Interop.Excel(我认为是 Excel 2010 的版本 13)的引用,从 C# 程序中引用它。

FYI:使用 Interop 在服务器上运行守护进程不是一个好主意:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2 http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2,但是如果它是一个短时间运行的程序,由用户运行并且您监视它,那么应该没问题。

如果您希望您的客户运行该程序,他们将需要安装主互操作程序集 (PIA)(如果他们在安装 Office 时尚未安装),可以在此处获取:

XP: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C41BD61E-3060-4F71-A6B4-01FEBA508E52 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C41BD61E-3060-4F71-A6B4-01FEBA508E52
2003: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD
2007: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=59DAEBAA-BED4-4282-A28C-B864D8BFA513 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=59DAEBAA-BED4-4282-A28C-B864D8BFA513
2010: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=938fe8ad-583b-4bd7-a345-23250dc15855 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=938fe8ad-583b-4bd7-a345-23250dc15855

我一直在我的 x64 Vista 机器上使用 Office11,所以我认为 x64 不会造成任何问题。

请注意,文档很糟糕!大约有 10 个不同版本的帮助、文档。我推荐:

熟悉:

  • 应用
  • Workbook
  • 工作表
  • Range

对象。您可以将数据读入 List> (在这种情况下,所有单元格都必须格式化为文本)或内存中的某些内容,然后您不必再处理 Interop 并且它的速度很快。在 C# 中,始终使用方法(某些文档错误地告诉您不能使用供内部使用的方法),例如: 范围.get_Values("A1") 与以下相反: 范围.单元格;

一个好的起点是:http://dotnetperls.com/excel-interop http://dotnetperls.com/excel-interop

官方文档在这里:http://msdn.microsoft.com/en-us/library/bb726434(v=office.12).aspx http://msdn.microsoft.com/en-us/library/bb726434(v=office.12).aspx,但它包含大量营销华夫饼,直到您到达 Interop 库,其中部分内容已有十年历史。

请注意:Excel 索引是从 1 开始的,即返回的 2D 数组中的第一个元素从 my2DArray[1,1] 开始!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# .NET 查询 Excel 电子表格,而不使用 Jet OLE DB 的相关文章

随机推荐