【问题标题】:Selecting a range of, or the first x, columns with OleDb使用 OleDb 选择一个范围或前 x 列
【发布时间】:2017-04-10 16:20:43
【问题描述】:
假设我有一个 Excel 文档,其中只有一张工作表。如果 A-G 列中有数据,我可以使用 "SELECT * FROM [" + sheetname + "]" 简单地选择所有这些数据。但是,如果我想指定列怎么办?如果只有少数列,我会像在 SQL 中那样做:SELECT x, y, z FROM...。但是,如果我想选择大量特定列,有没有办法批量执行此操作?另外,如果第一个特定列是工作表中的第一列,是否可以简单地选择前 x 列?
我希望在这里显着缩短 T-SQL 字符串。
【问题讨论】:
标签:
c#
oledb
oledbcommand
【解决方案1】:
您可以通过这种方式获取特定的列列表:
cmd = new OleDbCommand("SELECT * FROM [" + sheetname + "$A1:G10000]", conn);
如果您的列范围是连续的,这将起作用。它不必从A1 开始,它可以是任何有效的列。 G10000 表示为 A-G 列选择 10K 行。您可以根据工作表的估计大小更改该数字。
如果您的列范围不连续,那么您需要在SELECT 子句中指定列列表,例如:SELECT A1, C1 FROM...。尝试A 和A1,因为据我记得有人报告说简单地指定没有行号的 A 对他们不起作用,但我不能 100% 确定这一点,需要确认。
这个answer 有一些额外的信息。
HTH