高效将CSV数据加载到.NET DataTable中
将CSV数据加载到DataTable是数据处理和分析中的一项常见任务。本文探讨如何使用.NET的内置功能实现此目标,重点解决从CSV文件创建架构的问题。
使用标准ADO.NET功能
标准ADO.NET框架不直接支持读取CSV文件。但是,我们可以利用OleDb提供程序通过创建架构定义文件来导入CSV数据。
使用.INI文件创建架构
要创建架构文件(schema.ini),请按照以下步骤操作:
<code>[FileName.csv] Format=CSVDelimited ColNameHeader=True MaxScanRows=0</code>
代码实现
以下代码演示了如何使用带有架构定义文件的OleDb提供程序将CSV数据加载到DataTable中:
<code class="language-csharp">using System.Data; using System.Data.OleDb; using System.Globalization; using System.IO; static DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader) { string header = isFirstRowHeader ? "Yes" : "No"; string pathOnly = Path.GetDirectoryName(path); string fileName = Path.GetFileName(path); string sql = @"SELECT * FROM [" + fileName + "]"; using (OleDbConnection connection = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + header + "\"")) using (OleDbCommand command = new OleDbCommand(sql, connection)) using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { DataTable dataTable = new DataTable(); dataTable.Locale = CultureInfo.CurrentCulture; adapter.Fill(dataTable); return dataTable; } }</code>
此方法将CSV文件路径和一个标志作为输入,该标志指示第一行是否包含列标题。它根据CSV数据返回一个填充的DataTable。
这个方法接受CSV文件路径和一个布尔值作为参数,指示第一行是否为表头。它返回一个填充了CSV数据的DataTable。 改进后的代码增加了using System.Globalization;
和using System.IO;
命名空间引用,并更清晰地展示了代码的功能。
以上是如何有效地将CSV数据加载到.NET DataTable中?的详细内容。更多信息请关注PHP中文网其他相关文章!