使用OleDb选择一系列或前x列

时间:2017-04-10 16:20:44

标签: c# oledb oledbcommand

假设我有一个Excel文档,其中包含一个工作表。如果A-G列中有数据,我只需使用"SELECT * FROM [" + sheetname + "]"即可选择所有数据。但是,如果我想指定列怎么办?如果恰好只有少量列,我会像在SQL中那样做:SELECT x, y, z FROM...。但是,如果我想选择大量特定列,是否可以批量执行此操作?另外,如果第一个特定列是工作表中的第一列,是否可以简单地选择前x个列?

我希望在这里大大缩短T-SQL字符串。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取列的具体列表:

cmd = new OleDbCommand("SELECT * FROM [" + sheetname + "$A1:G10000]", conn);

如果您的列范围是连续的,这将有效。它不必从A1开始,它可以是任何有效列。 G10000表示为列A-G选择10K行。您可以根据工作表的估计大小更改该数字。

如果您的列范围不连续,则需要在SELECT子句中指定列的列表,例如:SELECT A1, C1 FROM...。同时尝试AA1,因为据我记得有人报告说只是指定一个没有行号的A对他们不起作用但是我不是100%肯定这个,需要确认

answer还有一些其他信息。

HTH