4

我正在从包含大约 350 列的 CSV 导入数据。这个 CSV 导入是固定的,我完全无法控制它。

如果我尝试在 Excel 2003 中打开 CSV,由于列限制为 255 (IV),它只能部分加载。

当我使用 OleDb 和 Microsoft.Jet.OLEDB.4.0 将 CSV 加载到数据集中时,它也只显示 255 列。更糟糕的是,当尝试访问这 255 列中的某些列的数据时,它会显示不正确的数据,并且会不一致地拆分值。

如果我在 Excel 中打开 CSV,让它截断数据并重新保存,我的导入工作正常。

我的问题是,有没有其他人遇到过 Jet.OLEDB 提供程序的这种限制。如果是,是否有解决该问题的方法?如果没有,是否有可以加载如此大的 CSV 的替代解决方案?

注意:这不是一次性的任务,我需要为最终用户提供一个浏览/上传按钮,以便在他们需要时执行此导入。

4

4 回答 4

3

我们已经成功地使用了http://www.codeproject.com/KB/database/CsvReader.aspx

于 2009-03-24T18:47:15.850 回答
1

您可以浏览此代码,使用 ExcelDataReader并在您的项目中添加参考。并使用下面的代码...

FileStream stream = File.Open(strFileName, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
excelReader.Close();
return result.Tables[0];
于 2015-06-15T09:13:57.353 回答
0

我建议以面向对象的方式进行。尝试使用 File Helpers 库。http://www.filehelpers.com/。它允许您为文件中的每一行提供一个对象表示。然后,您可以将此对象持久保存到数据库中。

于 2009-03-24T20:43:26.337 回答
0

schema.ini文件放在与 CSV 文件相同的文件夹中。有关完整语法,请参见此处

于 2012-12-04T10:24:37.803 回答