C# WinForm 如何高效地将大量数据从 CSV 文件导入 DataGridView
如果你有非常多的csv文件,每个文件包含N多行与M多列,如:18000 行和 27 列。现在,想制作一个 Windows 窗体应用程序,导入它们并在 datagridview 中显示,然后进行一些数学运算。可是,发现数据导入却很低效……
最佳方式:
如果你的数据不包含标题(第一行是数据行)。因此,当你尝试将 CSV 读取器添加到 DataSource 时,会出现 ArgumentException(添加了相同键的项)。hasHeaders在 CachCsvReader 构造函数中设置参数成功了,它将数据添加到了 DataGridView(非常快)。
using (CachedCsvReader csv = new CachedCsvReader(new StreamReader("data.csv"), false))
{
dataGridView.DataSource = csv;
}
CsvReader:https://github.com/phatcher/CsvReader
其它方式:
private void ReadCsv()
{
string filePath = @"C:\..\20130102.csv";
FileStream fileStream = null;
try
{
fileStream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}
catch (Exception ex)
{
return;
}
DataTable table = new DataTable();
bool isColumnCreated = false;
using (StringReader reader = new StringReader(new StreamReader(fileStream, Encoding.Default).ReadToEnd()))
{
while (reader.Peek() != -1)
{
string line = reader.ReadLine();
if (line == null || line.Length == 0)
continue;
string[] values = line.Split(',');
if(!isColumnCreated)
{
for(int i=0; i < values.Count(); i++)
{
table.Columns.Add("Column" + i);
}
isColumnCreated = true;
}
DataRow row = table.NewRow();
for(int i=0; i < values.Count(); i++)
{
row[i] = values[i];
}
table.Rows.Add(row);
}
}
dataGridView1.DataSource = table;
}
根据你的性能需求,此代码可以进行改进。它只是一个可供参考的工作示例。希望这能给你一些启发。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。