5

我想使用 ADO.net 从 Excel 文件中提取一些数据。这个过程在互联网上有很好的记录。我的问题是我的文件已由用户上传,因此仅作为字节数组存在于内存中。出于安全和性能原因,我宁愿不将此文件写入磁盘。

有没有办法构造一个连接到字节数组的连接字符串?或者也许将该数组公开为实际存储在内存中的文件(我猜像 RAM 磁盘)?

4

3 回答 3

5

如果它只存在于内存中,则无法连接。OLE 也被排除在外(尽管一开始就将 Office 自动化用于服务器应用程序的设计很糟糕)。

我能想到的唯一方法是自己读取二进制 Excel 数据 - 例如使用 SpreadSheetGear.Net 与类似的东西:

SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromStream(*stream*);
于 2009-05-28T12:33:33.433 回答
2

就像 Rich B 在他的回答中所说的那样,我认为不可能以标准的 ado.net 方式连接到仅在内存中徘徊的 excel 文件。最简单的解决方法可能是将 excel 文件实际保存到磁盘,使用 Jet 引擎与您的连接字符串连接到它,然后当您完成执行所有任务时,删除该文件。就性能而言,这可能不是理想的,但它缺乏一定的 WTFiness 会导致你把头发拉出来。

于 2009-05-28T12:28:46.547 回答
1

我认为仅通过连接字符串不可能做到这一点。

如果您需要有关磁盘上 Excel 文件的帮助:http ://connectionstrings.com/excel-2007

一般来说:http ://connectionstrings.com/

于 2009-05-28T12:23:15.623 回答