【发布时间】:2009-11-24 14:04:10
【问题描述】:
解析 CSV 文件时出现问题。我使用以下连接到文件:
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ "Data Source=\"" + dir + "\\\";"
+ "Extended Properties=\"text;HDR=No;FMT=Delimited\"";
//create the database query
string query = "SELECT * FROM [" + file + "]";
//create a DataTable to hold the query results
DataTable dTable = new DataTable();
//create an OleDbDataAdapter to execute the query
OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);
//Get the CSV file to change position.
//fill the DataTable
dAdapter.Fill(dTable);
return dTable;
由于某种原因,第一列读作“标题”正常(即 HDR=Yes 允许显示值)。问题是当我有 HDR=No 时,在该行中显示第一个“单元格”之后什么都没有。但是我需要 HDR=No,因为我稍后会编写 CSV。
顺便说一句,该行的其余部分仅在每隔一列中都有一个值。此外,每列中都有一个句点。有什么帮助吗?
干杯。
编辑:这里有几行类似于 CSV 的假冒:
//Problem row->>
File:,GSK1.D,,GSK2.D,,GSK3.D,
//The following rows, however, are fine:
/ 69,120.3,16.37%,128.9,7.16%,188.92,13.97%
D / 71,48.57,75.50%,32.15,26.65%,58.35,71.43%
T / 89,35.87,45.84%,50.01,28.87%,15.38,43.30%
编辑:当我将任何值放入上面的“空格”时,它们都会被解析,但无论我在有问题的单元格(例如 GSK1.D)中放入什么,它们都不会解析 - 除非它是一个数字!有没有机会自动将此单元格转换为“浮动”单元格?我怎样才能阻止它这样做?
【问题讨论】:
-
您可以粘贴到 CSV 的前几行吗?
-
@David:然后粘贴到虚拟文件的前几行。看在皮特的份上,如果你需要帮助,就合作吧!
-
听起来文件本身可能存在格式问题?
-
当您使用它时,我强烈建议您删除该 try/catch 块。你没有处理错误,你只是掩盖了任何潜在的问题。
-
@Ken 当你发表评论时,我正在粘贴一个假的,见上文。