c# - 时间:2019-01-03 标签:c#使用oledb从excel读取错误
问题描述
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 作为答案。所以效果很好?这正常吗?
解决方案
有一个名为 Linq to Excel 的 Nuget。我在几个项目中使用这个nuget来查询.csv和.xlsx文件里面的数据没有任何困难,很容易实现。它的性能可能很差,但它可以解决您的问题。
推荐阅读
- android - 短信验证避免多账号
- swift - 如果内容框架小于滚动视图框架,则 UIScrollView 自动布局循环
- python - 将节点颜色从 NetworkX 导出到 Gephi
- python - Windows 上 Blender 的 Openpose 插件:python 如何检测视频文件?
- python - 根据数据来自的列附加列表
- go - rpc 方法的定时器实现
- r - 如何将两个不同组的时间设置为零?
- python-3.x - 为什么我的带有 keras 和 tensorflow 后端的小 Flask 应用程序在后续图片上传时崩溃?
- sql - 获取父编号不总是匹配的父/子
- java - MapBlocks Android中的空点异常错误