使用OLEDB Connection选择Excel工作表使用范围

时间:2012-01-19 14:33:11

标签: c# .net oledbconnection oledbcommand

有没有办法通过OLEDB Command对象选择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())
    {
}

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

尝试 从[Sheet1 $]

中选择DISTINCT *