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

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

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

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

相关文章:

C# WinForm 如何高效地将大量数据从 CSV 文件导入 DataGridView

如果你有非常多的csv文件&#xff0c;每个文件包含N多行与M多列&#xff0c;如&#xff1a;18000 行和 27 列。现在&#xff0c;想制作一个 Windows 窗体应用程序&#xff0c;导入它们并在 datagridview 中显示&#xff0c;然后进行一些数学运算。可是&#xff0c;发现数据导入…...

【redis】redis常见数据结构及其底层,redis单线程读写效率高于多线程的理解,

redis常用数据结构及底层 string字符串、list链表、set无序集合、zset有序集合、hash哈希 1.string 底层结构是SDS简单动态字符串 struct sdshdr {int len; // 已用长度&#xff08;字符串实际长度&#xff09;int free; // 剩余可用空间char buf[]; // 数组&#…...

2025年5月AI科技领域周报(5.5-5.11):AGI研究进入关键验证期 具身智能开启物理世界交互新范式

2025年5月AI科技领域周报&#xff08;5.5-5.11&#xff09;&#xff1a;AGI研究进入关键验证期 具身智能开启物理世界交互新范式 一、本周热点回顾1. OpenAI发布GPT-5多模态大模型 突破通用智能关键阈值2. 特斯拉Optimus机器人量产版发布 具身智能进入工业场景3. 百度文心ERNIE…...

SQLPub:一个提供AI助手的免费MySQL数据库服务

给大家介绍一个免费的 MySQL 在线数据库环境&#xff1a;SQLPub。它提供了最新版本的 MySQL 服务器测试服务&#xff0c;可以方便开发者和测试人员验证数据库功能&#xff0c;也可以用于学习 MySQL。 免费申请 在浏览器中输入以下网址&#xff1a; https://sqlpub.com/ SQLP…...

URP相机如何将场景渲染定帧模糊绘制

1&#xff09;URP相机如何将场景渲染定帧模糊绘制 2&#xff09;为什么Virtual Machine会随着游戏时间变大 3&#xff09;出海项目&#xff0c;打包时需要勾选ARMv7吗 4&#xff09;Unity是手动还是自动调用GC.Collect 这是第431篇UWA技术知识分享的推送&#xff0c;精选了UWA社…...

WeakAuras Lua Script ICC (BarneyICC)

WeakAuras Lua Script ICC &#xff08;BarneyICC&#xff09; https://wago.io/BarneyICC/69 全量英文字符串&#xff1a; !WA:2!S33c4TXX5bQv0kobjnnMowYw2YAnDKmPnjnb4ljzl7sqcscl(YaG6HvCbxaSG7AcU76Dxis6uLlHNBIAtBtRCVM00Rnj8Y1M426ZH9XDxstsRDR)UMVCTt0DTzVhTjNASIDAU…...

为什么 mac os .bashrc 没有自动加载?

原因说明 在macOS中&#xff0c;默认情况下&#xff0c;终端使用的是Bash或Zsh作为shell。对于较新版本的macOS&#xff08;从Catalina开始&#xff09;&#xff0c;默认的shell已经切换为Zsh。因此&#xff0c;如果你正在使用Zsh&#xff0c;.bashrc文件不会自动生效&#xf…...

FramePack - 开源 AI 视频生成工具

&#x1f3ac; 项目简介 由开发者 lllyasviel 创建的一个轻量级动画帧处理工具库&#xff0c;专门用于游戏开发、动画制作和视频处理中的帧序列打包与管理。该项目采用高效的算法实现&#xff0c;能够显著提升动画资源的处理效率。 此 AI 视频生成项目&#xff0c;旨在通过低显…...

断点续传使用场景,完整前后端实现示例,包括上传,下载,验证

断点续传在多个场景中非常有用&#xff0c;包括但不限于大文件上传、跨国或跨区域文件传输、移动设备文件传输、备份和同步以及软件更新等。接下来&#xff0c;我将为你提供一个基于Java的后端实现示例&#xff0c;结合前端逻辑来完成整个断点续传的功能&#xff0c;包括上传、…...

【行为型之迭代器模式】游戏开发实战——Unity高效集合遍历与场景管理的架构精髓

文章目录 &#x1f504; 迭代器模式&#xff08;Iterator Pattern&#xff09;深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码&#xff08;背包系统遍历&#xff09;1. 定义迭代器与聚合接口2. 实现具体聚合类&#xff08;背包物品集合&#xff09;3. 实现具…...

Vuetify框架使用(一)之v-snackbar 组件封装及全局使用

说明&#xff1a;v-snackbar 组件适用于统一管理消息提示框(操作反馈的提示) 看效果&#xff1a; 1、在状态管理中创建文件&#xff0c;统一管理 // stores/snackbar.js /*** 统一管理消息提示框(操作反馈的提示)*/import { defineStore } from pinia; // 消息类型 export co…...

FPGA: UltraScale+ bitslip实现(方案+代码)

收获 一晃五年~ 五年前那个夏夜&#xff0c;我对着泛蓝的屏幕敲下《给十年后的自己》&#xff0c;在2020年的疫情迷雾中编织着对未来的想象。此刻回望&#xff0c;第四届集创赛的参赛编号仍清晰如昨&#xff0c;而那个在家熬夜焊电路板的"不眠者"&#xff0c;现在…...

【SpeechLMs】语音大型语言模型综述《A Survey on Speech Large Language Models》

摘要 大型语言模型 (LLM) 表现出强大的上下文理解能力和显著的多任务性能。 因此&#xff0c;研究人员一直在寻求将 LLM 整合到更广泛的语音语言理解 (SLU) 领域。 与传统方法不同&#xff0c;传统方法是将 LLM 级联以处理自动语音识别 (ASR) 生成的文本&#xff0c;而新方法则…...

C# 实现雪花算法(Snowflake Algorithm)详解与应用

在现代分布式系统中&#xff0c;生成全局唯一的标识符&#xff08;ID&#xff09;是一个非常重要的问题。随着微服务架构和分布式系统的普及&#xff0c;传统的单机数据库生成 ID 的方式已无法满足高并发和高可用的需求。为了解决这个问题&#xff0c;Twitter 提出了 雪花算法&…...

吴恩达机器学习笔记:特征与多项式回归

1.特征和多项式回归 如房价预测问题&#xff0c; ℎθ (x) θ0 θ1 frontage θ2 deptℎ x1 frontage&#xff08;临街宽度&#xff09;&#xff0c;x2 deptℎ&#xff08;纵向深度&#xff09;&#xff0c;x frontage ∗ deptℎ area &#xff08;面积&#xff09;…...

Flutter 与HarmonyOS Next 混合渲染开发实践:以 fluttertpc_scan 三方库为例

一、背景与价值 在跨平台开发中&#xff0c;Flutter 以其高效的 UI 构建能力著称&#xff0c;而鸿蒙 Next&#xff08;OpenHarmony&#xff09;则提供了深度系统集成的原生能力。将两者结合&#xff0c;可实现 UI 跨平台 原生功能深度融合 的混合渲染模式。本文以扫描库 flut…...

LangChain4j正式发布-简化将 LLM 集成到 Java 应用程序过程

LangChain4j 的目标是简化将 LLM 集成到 Java 应用程序中的过程。 官网地址 源码地址 开源协议&#xff1a;Apache License 2.0 实现方法 统一 API&#xff1a;LLM 提供程序&#xff08;如 OpenAI 或 Google Vertex AI&#xff09;和嵌入&#xff08;矢量&#xff09;存储…...

【C++】汇编角度分析栈攻击

栈攻击 介绍原理示例代码汇编分析 介绍原理 核心原理是通过 缓冲区溢出&#xff08;Buffer Overflow&#xff09; 等漏洞&#xff0c;覆盖栈上的关键数据&#xff08;如返回地址、函数指针&#xff09;&#xff0c;从而改变程序执行流程&#xff1b; 在 C 中&#xff0c;每个…...

Vue 3 打开 el-dialog 时使 el-input 获取焦点

运行代码&#xff1a;https://andi.cn/page/622178.html 效果&#xff1a;...

C++23 views::repeat (P2474R2) 深入解析

文章目录 引言C20 Ranges库回顾什么是Rangesstd::views的作用 views::repeat概述基本概念原型定义工作原理应用场景初始化容器模拟测试数据 总结 引言 在C的发展历程中&#xff0c;每一个新版本都会带来一系列令人期待的新特性&#xff0c;这些特性不仅提升了语言的性能和表达…...

HTML5 定位详解:相对定位、绝对定位和固定定位

在HTML5和CSS中&#xff0c;定位(positioning)是控制元素在页面上位置的重要机制。主要有四种定位方式&#xff1a;静态定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)。下面我将详细讲解这三种非静态定位方式&#xff0c;并提供相应的源代码示例。 …...

OpenCv高阶(4.0)——案例:海报的透视变换

文章目录 前言一、工具函数模块1.1 图像显示函数1.2 保持宽高比的缩放函数1.3 坐标点排序函数 二、透视变换核心模块2.1 四点透视变换实现 三、主流程技术分解3.1 图像预处理3.2 轮廓检测流程3.3 最大轮廓处理 四、后处理技术4.1 透视变换4.2 形态学处理 五、完整代码总结 前言…...

光谱相机的图像预处理技术

光谱相机的图像预处理技术旨在消除噪声、增强有效信息&#xff0c;为后续分析提供高质量数据。 一、预处理流程与技术要点 ‌辐射校正‌ ‌辐射定标‌&#xff1a;将图像灰度值转换为绝对辐射亮度&#xff0c;常用反射率法、辐亮度法和辐照度法消除传感器响应差异&#xff0…...

CSS 溢出内容处理、可见性控制与盒类型设置深度解析

CSS溢出内容处理、可见性控制与盒类型设置深度解析 一、溢出内容处理&#xff08;Overflow&#xff09; 在网页设计中&#xff0c;内容超出容器边界是常见问题。CSS提供了overflow属性及其变体来控制这种情况。 1.1 溢出基本属性 核心属性&#xff1a; overflow: visible&…...

k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持

k8s监控方案实践补充&#xff08;一&#xff09;&#xff1a;部署Metrics Server实现kubectl top和HPA支持 文章目录 k8s监控方案实践补充&#xff08;一&#xff09;&#xff1a;部署Metrics Server实现kubectl top和HPA支持一、Metrics Server简介二、Metrics Server实战部署…...

从代码学习深度学习 - 实战 Kaggle 比赛:图像分类 (CIFAR-10 PyTorch版)

文章目录 前言1. 读取并整理数据集1.1 读取标签文件1.2 划分训练集和验证集1.3 整理测试集1.4 执行数据整理2. 图像增广2.1 训练集图像变换2.2 测试集(和验证集)图像变换3. 读取数据集3.1 创建 Dataset 对象3.2 创建 DataLoader 对象4. 定义模型4.1 获取 ResNet-18 模型4.2 损…...

【数据结构】二分查找5.12

Basic 需求&#xff1a;在有序数组A内&#xff0c;查找值target 如果找到返回索引 如果找不到返回-1 算法描述&#xff1a; 前提&#xff1a;给定一个内含n个元素的有序数组A&#xff08;升序&#xff09;&#xff0c;一个待查找值 设置两个索引&#xff1a;i0;jn-1; 如果…...

深入探索向量数据库:构建智能应用的新基础

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型辅助生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认…...

Swagger go中文版本手册

Swaggo(github.com/swaggo/swag)的注解语法是基于 OpenAPI 2.0 (以前称为 Swagger 2.0) 规范的,并添加了一些自己的约定。 主要官方文档: swaggo/swag GitHub 仓库: 这是最权威的来源。 链接: https://github.com/swaggo/swag重点关注: README.md: 包含了基本的安装、使用…...

Cloudera CDP 7.1.3 主机异常关机导致元数据丢失,node不能与CM通信

问题描述 plaintext ERROR Could not load post-deployment data from /var/run/cloudera-scm-agent/process/ccdeploy_hadoop-conf_etchadoopconf.cloudera.yarn_-8903374259073700469 IOError: [Errno 2] No such file or directory: /var/run/cloudera-scm-agent/proce…...