在内存中 OleDbConnection 到 Excel 文件

Posted

技术标签:

【中文标题】在内存中 OleDbConnection 到 Excel 文件【英文标题】:In Memory OleDbConnection to Excel File 【发布时间】:2010-10-28 20:47:19 【问题描述】:

我想打开一个 OleDbConnection 到内存中的 Excel 文件作为 文件流。有谁知道这是否可行以及如何实现?

大图 我想将文件字节传递到 .NET CLR 存储过程中并提取数据。也许有更好的方法可以做到这一点,但我没有考虑过。

提前致谢。

【问题讨论】:

是不是要将表格数据传递给存储过程? 理想情况下,我只需将 Excel 文件作为 Blob 或字节 [] 传递给 .NET SP。在 SP 内部,我将打开它并处理数据。 【参考方案1】:

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

免责声明:我拥有 SpreadsheetGear LLC

【讨论】:

【参考方案2】:

JP 提供的 VSTO 解决方案绝对是可行的。但是,如果您真的想使用 OleDb 和一些 SQL,请查看this artcile:这是一篇 MS 知识库文章,介绍了如何使用 OleDb 将数据从 excel 导入 SQLSever。

【讨论】:

埃斯特班,优秀的文章。但是,在所有提到的方法中,似乎都依赖于将 Excel 文件保存到磁盘。知道如何利用这些技术附加到内存中的 Excel 文件或 Blob 列吗?谢谢。 @Steve:我不知道,但我不这么认为。 @EstebanAraya 我在这里问了一个关于但关于访问的类似问题:***.com/questions/14475968/… 请你检查一下。 这并没有回答我也在寻找答案的问题【参考方案3】:

您可以使用VSTO 提取数据。它有一个object model for Excel。然后将您想要的内容传递给proc。我认为这比尝试让 CLR 存储过程破译 Excel 文件流更好。

【讨论】:

我在这里问了一个关于但关于 Access 的类似问题:***.com/questions/14475968/… 请你检查一下。

以上是关于在内存中 OleDbConnection 到 Excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

JSON.net 直接从 oledbconnection 序列化

JSON.net 直接从 oledbconnection 序列化

将 OleDbConnection 刷新到 Access DB - 最佳实践

使用 OLEDBConnection 将新记录插入到带有 Visual Basic 的表中

MS Access OLEDBConnection 到 Excel 问题

OLEDBConnection 到 Excel 不喜欢网络共享路径