【发布时间】:2014-03-15 08:16:01
【问题描述】:
乍一看,我遇到了很多人以前遇到的同样问题,我发现了很多关于我的问题的问题和答案,但没有一个对我有帮助。
我使用 ADO NET 从 NET 中的 MS excel 文件(文件 XLS)导入。该文件在同一列中包含混合类型:数字和文本,并且出现了众所周知的问题 - 无法识别文本格式并丢失数据。
我使用以下带有推荐参数的连接字符串:
string strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text\";", pathname);
这是我的代码:
OleDbConnection sqlConn = new OleDbConnection(this.strConnectionString);
sqlConn.Open();
OleDbDataAdapter sqlAdapter = new OleDbDataAdapter();
string sql = "SELECT * FROM [" + sheetName + "]";
OleDbCommand selectCMD = new OleDbCommand(sql, sqlConn);
sqlAdapter.SelectCommand = selectCMD;
DataTable dt = new DataTable(sheetName);
sqlAdapter.Fill(dt);
我在NET 3.5(x86)和NET 4.0(x86)下测试过(也测试过windows exe和asp net版),问题依旧。
我不知道我是否做错了什么,但我花了很多时间,问题仍然存在。
【问题讨论】:
-
看看This。我知道这有点乏味,但它会完成工作。
-
谢谢@Rohan。我看到了这个答案,看起来我必须在 Excel 下手动添加第一个文本行,然后我可以通过 ADO NET 读取(并删除额外添加的行)。我想避免更改现有的 excel 文件,因为它是一个不适合我的用户的应用程序。如果可以通过 ADO NET 临时添加第一个文本行,然后保存 excel 文件,最后读取这个更改的 excel 文件,我会接受。
标签: .net excel ado.net dataset oledb