使用 OLEDB 连接选择 Excel 工作表使用范围

发布于 2024-12-28 00:16:55 字数 382 浏览 0 评论 0原文

有没有办法通过 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())
    {
}

Is there any way to select the Excel sheet used range via OLEDB Command object?

Because I have an Excel file that has 400 rows, but when I delete 200 rows and try to select the sheet again, it's selecting up to 400 rows again instead of selecting the 200 rows. This is the code which I've written to select the sheet:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神妖 2025-01-04 00:16:55

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);
}

Afaik you can do this in two ways:

First.

Write a simple SQL select in OleDBCommand. At the moment you are selecting all rows in the excel.
Probably the fact that you deleted 200 rows from the document does not help since it still selects those empty rows.

Sample:

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

Second.

Load your entire data to DataTable and work on this programatically.

Sample:

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);
}
无所谓啦 2025-01-04 00:16:55

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

Try
select DISTINCT * from [Sheet1$]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文