我目前正在开发一个需要从Excel电子表格导入数据的64位C#应用程序。我听说最好的方法是使用ADO数据连接。但是,我已经阅读(并且经历过)为了使这项工作,我必须编写一个32位应用程序,因为没有用于64位应用程序的OleDb odbc驱动程序。
问题是我无法将我的应用程序编译成32位应用程序或程序的其他部分(不可重写)会崩溃。
我无法在64位应用程序中从Excel导入数据这一事实看起来是一个相当荒谬的问题。我该如何解决这个问题?或者如果没有,可以使用哪些解决方法?
答案 0 :(得分:3)
两种可能的解决方案:
请改用Open XML SDK。这是Office 2007特定的,但它直接处理文件,而不必通过任何数据库驱动程序。这是我的首选武器,因为它比自动化更快,更不易碎,可以处理更为“高级”的任务,如格式化。
编译单独的x86二进制文件,并根据需要从x64应用程序启动该过程。导入器应用程序可以使用某种形式的IPC提供反馈,或者只是将文件转换为CSV,您可以在x64应用程序中本地读取。 (我不完全是这种类型的kludge的粉丝,但你做的就是你要做的......)
我同意,我们仍然没有x64 JET或ACE驱动程序,但现在只有that seems to be the way it is,这有点荒谬。即使MSDASQL也不适合你;有一个64位的库,但我读过Excel组件仍然只能在32位模式下工作。
答案 1 :(得分:0)
您是否考虑过使用VSTO(Microsoft Visual Studio Tools for Office,我认为它现在作为VS 2008的一部分包含在内,并且可以从早期版本获得,可以从Microsoft免费下载)?或者使用OLE自动化?
答案 2 :(得分:0)
SpreadsheetGear for .NET是一个与Excel兼容的.NET组件,它是用C#编写的安全托管代码,并为“任何CPU”编译,因此它适用于32位和64位.NET。这是.NET的一大优势 - 一个SpreadsheetGear.dll版本与32位.NET CLR和64位.NET CLR同样适用。
免责声明:我拥有SpreadsheetGear LLC