当前位置: 首页 > news >正文

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;
    }

根据你的性能需求,此代码可以进行改进。它只是一个可供参考的工作示例。希望这能给你一些启发。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

http://www.xdnf.cn/news/357229.html

相关文章:

  • JavaScript 基础
  • 成龙电影中的三菱汽车
  • 退货处理费归零:亚马逊卖家年度成本节省路径解析
  • 硅基计划 学习总结 拾贰
  • WebSocket与Socket.IO实现简易客服聊天系统全解析
  • Spring Web MVC快速入门
  • [css]纯css绘制三角形
  • MindSpore框架学习项目-ResNet药物分类-数据增强
  • HTML应用指南:利用POST请求获取全国德邦快递服务网点位置信息
  • C++中extern关键字详解:不同情况下的使用方式
  • Text Based Person Search 研究进展汇报:主要问题、数据集、未来方向
  • ATH12K驱动框架架构图
  • vue3 全局注册自定义指令,input聚焦失焦展示对应值
  • Java LocalDateTime类详解:高效处理日期时间
  • 面试题:Java集合框架高频面试题总结
  • 何时需要import css文件?怎么知道需要导入哪些css文件?为什么webpack不提示CSS导入?(导入css导入规则、css导入规范)
  • Nginx修改日志时间格式
  • WHAT - 用户访问产品个性化延迟问题和技术手段
  • 从投入产出、效率、上手难易度等角度综合对比 pytest 和 unittest 框架
  • 第三节:条件语句与循环:控制程序流程
  • 特殊配合力(SCA)作为全基因组关联分析(GWAS)的表型,其生物学意义和应用价值
  • MQTT:轻量级物联网通信协议详解
  • Vulnhub Lazysysadmin靶机攻击实战(一)
  • logback日志输出到项目运行目录
  • Git_idea界面进行分支合并到主分支详细操作
  • Elasticsearch内存管理与JVM优化:原理剖析与最佳实践
  • 两款Windows小工具,不收费还好用
  • 【网工第6版】第9章 网络管理
  • C语言实现小波变换去噪
  • 虚拟专用服务器(VPS)完全指南:从入门到选型