【发布时间】:2021-10-12 01:38:21
【问题描述】:
private void OnCreated(object sender, FileSystemEventArgs e)
{
excelDataSet.Clear();
string extension = Path.GetExtension(e.FullPath);
if (extension == ".xls" || extension == ".xlsx")
{
string ConnectionString = "";
if (extension == ".xls") { ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = '" + e.FullPath + "';Extended Properties=\"Excel 8.0;HDR=YES;\""; }
if (extension == ".xlsx") { ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = '" + e.FullPath + "';Extended Properties=\"Excel 12.0;HDR=YES;\""; }
using (OleDbConnection conn = new OleDbConnection(ConnectionString))
{
conn.Open();
OleDbDataAdapter objDA = new OleDbDataAdapter("select * from [Sheet1$]", conn);
objDA.Fill(excelDataSet);
conn.Close();
conn.Dispose();
}
}
}
这是我的代码。当我的文件观察器触发时它正在工作。问题是我读取的 excel 文件有 1 个标题行和 3 个具有值的行。当我使用此代码并检查我的数据集行数时,我得到 9 .. 我不知道它从哪里得到 9,我做错了什么吗?我正在检查我的代码最后 30-35 分钟,但仍然找不到我做错了什么.. 我得到了列的权利,但行不工作。顺便说一句,我不需要标题行
更新:我的示例 excel 文件有 3 行,我得到 9 作为行数。我只是复制了这些行并使我的文件成为 24 行 + 1 个标题行,当我执行 rows.count 时,我得到 24 作为答案。所以效果很好?这正常吗?
【问题讨论】:
-
通过 OleDb 进行未过滤选择时,Excel 中已删除的行可能会显示为现有行。如果您知道某个列将在 excel 中包含数据,请在该列中添加
where子句
标签: c# oledbconnection