【发布时间】:2015-04-08 14:46:48
【问题描述】:
我正在尝试读取制表符分隔的 Excel .csv 文件。有八列,每列都有混合数据。我会发布输出的图片,但我没有足够的声誉这样做(这是我的第一篇文章,所以请耐心等待)。本质上,输出表 dt 只包含一个带有乱码列标题的列。
这是我正在使用的代码:
来自 App.config:
<add key="cnProvider" value="Microsoft.Jet.OLEDB.4.0"/>
<add key="cnProperties" value=""text;HDR=Yes;FMT=TabDelimited;CharacterSet=65001""/>
来自 Program.cs:
string sqlStatement_1 = ConfigurationSettings.AppSettings["sqlStatement_1"];
string cnProperties = ConfigurationSettings.AppSettings["cnProperties"];
string cnStr = "Provider=" + cnProvider + ";Data Source=" + folder + ";Extended Properties=" + cnProperties + ";";
OleDbDataAdapter Adp;
Adp = new OleDbDataAdapter(sqlStatement_1, cnStr);
using (Adp) {
Adp.Fill(dt);
}
当将 FMT 更改为 Delimited 而不是 TabDelimited 时,此代码在逗号分隔文件上运行良好。有任何想法吗?文件大小小于 1000 行,因此执行速度不是什么大问题。该代码不会产生任何异常。
提前致谢!
【问题讨论】:
-
这里是一个很好的网站,您应该查看有关如何使用 OLEDB C# ConnectionStrings 配置连接字符串的信息,请按照以下步骤操作,我很确定您会很快发现哪里出错了。 . 还对如何使用
Fill方法以及如何使用using(){}语句进行谷歌搜索,您还需要编辑原始问题并显示您在app.Config 文件中定义此@ 设置的位置987654326@ -
您是否有任何例外情况,如果有,您可以用这些来编辑问题。
-
当您可以在 app.config 文件设置中添加所有必要的属性时,无需在代码中动态构建
cnStr。请查看我之前提到的连接字符串链接评论 -
没有例外。它不会用数据填充 dt,而是只生成一个带有乱码标题的空白列。 MethodMan,我会查看您提供的链接。谢谢
-
如果是 xslx 表格,则需要使用 ACE OLEDB 驱动程序,而不是 JET。
标签: c# csv datatable oledb delimited