C# 查询一个 excel 最快的方法

C# Query an excel fastest method

我有一个 excel 文件,我正在用 SQL 使用 OleDB 在我的 C# 程序上查询它。 但我遇到了一个问题。我的文件有大约 300K 行,查询需要很长时间。我用谷歌搜索了这个问题并使用了一些库,例如 spreadsheetlight 和 EPPlus,但它们没有查询功能。 谁能告诉我查询文件的最快方法?

提前致谢。

我处理过 400-800K 行 Excel 文件。任务是读取所有行并将它们插入 SQL 服务器数据库。根据我的经验,OleDB 无法及时处理如此大的文件,因此我们不得不回退到 Excel 使用 SQL 服务器方式直接将文件导入数据库,例如OPENROWSET.

即使是较小的文件,如 260K 行也需要大约。使用 OleDB 一个小时,使用 Core2 Duo 生成硬件逐行导入 DB table。

因此,对于您的情况,您可以考虑以下几点:

1.Try 使用范围 SELECT:

分块读取 Excel 文件
OleDbCommand date = new OleDbCommand("SELECT ["+date+"] FROM [Sheet1$A1:Z10000]
                                  WHERE ["+key+"]= " + array[i].ToString(), connection);

注意,[Sheet1$A1:Z10000] 告诉 OleDB 只处理 sheet 的 A 到 Z 列的前 10K 行,而不是整个 sheet。例如,如果您的 Excel 文件已排序并且您知道不需要检查所有行但只检查今年,则可以使用此方法。或者您可以动态更改 Z10000 以读取文件的下一个块并将结果与​​前一个合并。

2.Get你所有的Excel文件内容直接导入到数据库中使用直接数据库导入,例如MS SQL服务器的OPENROWSET然后运行 您针对 RDBMS 而不是 Excel 文件的搜索查询。

我个人建议选项 #2。评论您是否可以使用 DB 以及您可以使用哪些 RDBMS product/version,如果有的话。

希望对您有所帮助!