0

有没有办法通过 OLEDB 命令对象选择 Excel 工作表使用范围?

因为我有一个包含 400 行的 Excel 文件,但是当我删除 200 行并尝试再次选择工作表时,它再次选择最多 400 行而不是选择 200 行。这是我为选择工作表而编写的代码:

oledbConn = new OleDbConnection(connectionString);
oledbCmd = new OleDbCommand("select * from [Sheet1$]", oledbConn);
oledbConn.Open();
oledbDr = oledbCmd.ExecuteReader();
    while(oledbDr.Read())
    {
}
4

2 回答 2

2

Afaik 你可以通过两种方式做到这一点:

第一的。

在 OleDBCommand 中编写一个简单的 SQL 选择。目前,您正在选择 excel 中的所有行。您从文档中删除 200 行这一事实可能无济于事,因为它仍然选择那些空行。

样本:

select * from [Sheet1$] WHERE ID <= 200

第二。

将整个数据加载到DataTable并以编程方式进行处理。

样本:

DataTable xlsData = new DataTable();
List<string> result = new List<string>();
string query = string.Format("SELECT * FROM [{0}]", this.SheetName);
OleDbDataAdapter dbAdapter = new OleDbDataAdapter(query, dbConnection);
dbAdapter.Fill(xlsData);
foreach (DataColumn column in xlsData.Columns)
{
  result.Add(column.ColumnName);
}
于 2012-01-19T14:44:12.620 回答
0

尝试从 [Sheet1$] 中选择 DISTINCT *

于 2016-06-01T13:10:46.080 回答