【发布时间】:2012-01-04 09:33:39
【问题描述】:
我正在使用以下代码从 csv 文件中获取数据:
public DataTable GetCSVData(string CSVFileName)
{
string CSVConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + ConfigurationSettings.AppSettings["CSVFolder"].ToString() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False;";
using (OdbcConnection Connection = new OdbcConnection(CSVConnectionString))
{
DataTable CSVDataTable = new DataTable();
string SelectQuery = string.Format(@"SELECT * FROM [{0}]", CSVFileName);
OdbcDataAdapter Adapter = new OdbcDataAdapter(SelectQuery, Connection);
Adapter.Fill(CSVDataTable);
return CSVDataTable;
}
}
确切的问题是,如果一个 csv 列包含一个数据,该数据以粗体突出显示,如下面的第 1 行所示
Row1-> col1,"cdwdf" dsdfs,col2,col3
使用上述代码获取数据时会跳过 col2 和 col3(突出显示文本之后的列),并继续从下一行获取数据。
如果第 1 行中提到的列文本完全在引号内 ("cdwdf dsdfs"),则数据被正确提取。
任何人请告诉我在这种情况下如何从 csv 中获取数据...
【问题讨论】:
-
我认为下面的 skajfes 评论在技术上是正确的 - csv 格式错误。您可以重新创建您的 csv,还是需要您的读者更加宽容?我们还使用 Lumenworks (Fast CSV Reader) fwiw。
-
@Rob,所以由于 ("cdwdf" dsdfs) 之间的引号,剩余的列在获取时会被跳过,对吧?
标签: c# import-from-csv