在不使用Jet OLE DB的情况下使用C#.NET查询Excel电子表格
是否有任何方法可以查询excel 2010电子表格,而无需使用Jet或作为CSV导出并查询CSV文件 我不能使用Jet的原因是,应用程序需要在Windows Server 2008 R2上作为web服务运行,没有32位支持,因此Jet无法工作。这是给定的,因为目标服务器上没有安装WOW64 建议使用32位代理计算机,但这也不是一个选项 进一步信息:服务器正在运行Sharepoint 2010 谢谢在不使用Jet OLE DB的情况下使用C#.NET查询Excel电子表格,c#,.net,excel,oledb,C#,.net,Excel,Oledb,是否有任何方法可以查询excel 2010电子表格,而无需使用Jet或作为CSV导出并查询CSV文件 我不能使用Jet的原因是,应用程序需要在Windows Server 2008 R2上作为web服务运行,没有32位支持,因此Jet无法工作。这是给定的,因为目标服务器上没有安装WOW64 建议使用32位代理计算机,但这也不是一个选项 进一步信息:服务器正在运行Sharepoint 2010 谢谢 JD是-您可以使用Excel.Interop-通过在VS添加引用对话框的.Net选项卡中添加对Mi
JD是-您可以使用Excel.Interop-通过在VS添加引用对话框的.Net选项卡中添加对Microsoft.Office.Interop.Excel(我认为适用于Excel 2010的版本13)的引用,从C#程序中引用它 仅供参考:使用Interop:在服务器上运行守护程序不是一个好主意,但是如果它是一个短时间运行的程序,由用户运行,并且您对其进行监视,则应该可以 如果您希望您的客户端运行该程序,他们需要安装主互操作程序集(PIA),如果他们在安装office时还没有安装主互操作程序集,可以从以下位置获取: XP:
2003年:
2007年:
2010年: 我一直在我的x64 Vista机器上使用Office11,所以我认为x64不会带来任何问题 请注意,文档太糟糕了!有大约10个不同版本的帮助文档。我建议: 熟悉以下内容:
- 应用
- 工作手册
- 工作表
- 射程
注意:Excel索引是基于1的,即返回的2D数组中的第一个元素从my2DArray[1,1]开始 以及Excel.Interop,您可以使用ADO.Net来使用ACE引擎而不是旧的JET引擎吗?ACE由Excel/Access 2007引入,旨在取代JET。这里是另一个第三方软件包,一位同事刚刚向我建议: 看起来这将减少对互操作的需要,并且必须安装Office PIA
但是没有价格,所以可能不便宜。我也面临着这个问题。我的情况:需要在Windows7x64和x86上运行的非普通客户端应用程序。需要从Excel电子表格中提取数据;不需要灵活性和最小的“用户痛苦”。ACEDB(accessdatabaseengineredist.)没有这样做,因为显然,在已经安装x86(32位)Office的情况下,无法安装它的x64版本。PIA不是一个选项——“最小化用户痛苦” 我使用了这个图书馆:
它附带了大量的示例,我能够将应用程序构建到“任何CPU”,而不是限制到x86,这导致了我们尝试使用的其他第三方DLL出现问题。我在大约10分钟内就开始使用NPOI,所以我可以肯定地推荐它。这就是我要建议的。64位可能会造成一两条皱纹,但它应该能工作。太棒了!唯一的问题是,这需要在服务器上安装一个Office 2010的副本,这并不理想,但我相信它会工作的。谢谢。我想,不管你做什么决定,你至少需要一些Office组件。@JD:你可以直接安装PIA而不是Office,把它们拿到这里:@Mrk:我有点怀疑。PIA只是在您的程序和Excel之间传递消息,实际上它本身并不处理任何行为。如果没有Excel可将请求传递到,则不会加载文件,也不会返回数据。您不能将Excel电子表格导入“真实”数据库吗?由于您正在编写一个web服务,如果将数据源保持为excel文件,您可能会在并发性方面遇到一些问题。。。然后,您可以安排一个作业来不时更新sql server表。否。业务要求将信息存储在excel文件中。不是我的选择…我不知道有可能不安装WOW64-以我的经验,任何32位程序都运行在64位机器上-可能WOW64在那里,但你甚至没有注意到它。Mrk Mnl:默认情况下,它不再安装在Server 2008 R2 Server core中。我明白了(必须补齐min chars)我认为正版Microsoft组件会更可靠,而且不应该存在成本问题,因为它已经是基于Microsoft的服务器-即。这不像是Linux box强制使用第三方组件。如上所述,它需要在服务器上安装Office 2010,因此,使用互操作方法存在成本问题(因为您需要Microsoft许可证才能使用Office)。其次,我建议的包是一个占用空间小的DLL,它更适合于可能不可能/不希望安装Office 2010的服务器环境。