在内存中使用OleDbConnection连接Excel文件

8

我想打开一个OleDbConnection连接到内存中的Excel文件,它是一个FileStream。有人知道是否可能以及如何实现吗?

总的来说,我希望将文件字节传递到.NET CLR存储过程中并提取数据。也许还有更好的方法,我还没有考虑过。

提前感谢。


你是想将表格数据传递给存储过程吗? - shahkalpesh
理想情况下,我只需将Excel文件作为Blob或byte[]传递给.NET SP。在SP内部,我会打开它并处理数据。 - javacavaj
3个回答

1

您可以使用SpreadsheetGear从内存中的字节数组或任何流中打开文件,方法是使用SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromMemory(byte[]) / OpenFromStream(System.IO.Stream)。

免责声明:我拥有SpreadsheetGear LLC。


0

您可以使用VSTO提取数据。它有一个Excel对象模型。然后将所需内容传递给过程。我认为这比尝试让CLR存储过程解析Excel文件流更好。


我在这里问了一个类似的关于Access的问题:https://dev59.com/9m3Xa4cB1Zd3GeqPf43H ,你能帮忙看一下吗? - Saeid

0
JP提供的VSTO解决方案绝对可行。但是,如果您真的想使用OleDb和一些SQL,请查看this文章:这是一个微软知识库文章,描述了如何使用OleDb将数据从Excel导入到SQLSever。

Esteban,非常棒的文章。然而,在所有提到的方法中,似乎都依赖于将Excel文件持久化到磁盘上。有什么想法可以利用这些技术来连接到一个内存中的Excel文件或Blob列吗?谢谢。 - javacavaj
@Steve:我不知道,但我不认为是这样。 - Esteban Araya
@EstebanAraya,我在这里问了一个类似的关于Access的问题:https://dev59.com/9m3Xa4cB1Zd3GeqPf43H 你能否帮忙查看一下。 - Saeid
1
这并没有回答我正在寻找答案的问题。 - JMG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接