C#: 导入excel文件到 dataGridView 控件

说明:文档介绍将 excel文件导入到 dataGridView 控件中的方法。

1.创建一个 dataGridView 控件 dataGridView_import_data,然后放置一个按键,给按键添加一个触发事件函数,函数内容如下。

2.在事件函数末尾添加了内存回收代码 ,测试时发现导入一个3M的excel文件后,软件占用内存会增加900M左右,添加GC.Collect();是为了快速让系统回收内存,如果不添加约几分钟后系统也会自动回收多余的内存。

GC.Collect();//强制进行垃圾回收

//导入excel数据到表格private void button_wav_import_data_Click(object sender, EventArgs e)
{OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "Excel Files|*.xlsx";openFileDialog.Title = "Select an Excel File";if (openFileDialog.ShowDialog() == DialogResult.OK){string filePath = openFileDialog.FileName;try{using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)){IWorkbook workbook = new XSSFWorkbook(fs);ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表DataTable dt = new DataTable();IRow headerRow = sheet.GetRow(0);// 创建列for (int i = 0; i < headerRow.LastCellNum; i++){dt.Columns.Add(Convert.ToString(headerRow.GetCell(i)));}// 添加行数据for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++){IRow row = sheet.GetRow(i);DataRow dataRow = dt.NewRow();for (int j = row.FirstCellNum; j < row.LastCellNum; j++){if (row.GetCell(j) != null){dataRow[j] = row.GetCell(j).ToString();}}dt.Rows.Add(dataRow);}dataGridView_import_data.DataSource = dt;}// 把列抬头名称赋值给 列的namestring Columns_name = "";for (int i = 0; i < dataGridView_import_data.Columns.Count; i++){Columns_name = dataGridView_import_data.Columns[i].HeaderText;dataGridView_import_data.Columns[i].Name = Columns_name;}}catch (Exception ex){MessageBox.Show("Error: " + ex.Message);}}GC.Collect();//强制进行垃圾回收
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/657108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过 Footprint 的钱包地址属性解密身份和意图

作者&#xff1a;shellyfootprint.network 编译&#xff1a;mingfootprint.network Footprint Analytics 的钱包地址属性揭示了加密货币市场中深层的洞察力&#xff0c;揭示了钱包地址背后的身份和意图。这些标签&#xff0c;如“交易所”&#xff0c;“矿工”或“大鲸”&…

vue-computed 计算属性

一、computed 计算属性 在Vue应用中&#xff0c;在模板中双向绑定一些数据或者表达式&#xff0c;但是表达式如果过长&#xff0c;或者逻辑更为复杂 时&#xff0c;就会变得臃肿甚至难以维护和阅读&#xff0c;例如&#xff1a; <div>写在双括号中的表达式太长了,不利于阅…

Linux 入门基础知识(一)—— Linux的基本使用

Linux 入门基础知识 一、Linux的基本使用和配置1.1、终端1.2、消耗内存1.3、运行级别1.6、登录前欢迎语1.5、登录后欢迎语1.6、shell1.7、ps aux1.8、设置主机名1.9、whoami和who am i1.10、命令提示符 二、Linux执行命令的过程详解和命令类型2.1、命令执行2.2、hash缓存表2.3、…

面试 CSS 框架八股文十问十答第二期

面试 CSS 框架八股文十问十答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;对盒模型的理解 盒模型…

张维迎《博弈与社会》纳什均衡与囚徒困境博弈(2)囚徒困境博弈

囚徒困境大家应该都比较熟悉了&#xff0c;我觉得这篇的意义大概在与&#xff0c;经济学术语的运用&#xff1f; 囚徒困境&#xff1a;个人理性与集体理性的矛盾 假定有两个犯罪嫌疑人共同作案。警察抓住他们以后&#xff0c;分开拘押&#xff0c;并告诉他们&#xff1a;可以选…

Chiplet,汽车“芯”风向

异构集成、高速互联、算力灵活可扩展正在成为新一轮汽车芯片竞争的焦点。尤其是随着以ChatGPT为代表的大数据、大模型产品在车端的落地&#xff0c;对于芯片的要求还在持续提升。 本周&#xff0c;12家日本汽车制造商&#xff08;包括丰田、日产、本田等&#xff09;、零部件制…

设计与实现基于Java+MySQL的考勤发布-签到系统

课题背景 随着现代经济的迅速发展&#xff0c;电子考勤签到服务已经渗透到人们生活的方方面面&#xff0c;成为不可或缺的一项服务。在这个背景下&#xff0c;线上签到作为考勤签到的一种创新形式&#xff0c;为用户提供了便捷的操作方式&#xff0c;使得任务签到、个人签到记…

mac 窗口管理器

1、下载地址 链接: https://pan.baidu.com/s/1uINZgeoR4zBWgCtTvAi8zA?pwdvvfm 提取码: vvfm 2、配置可以直接网上搜教程

代码随想录算法训练营第35天 | 860.柠檬水找零 406.根据身高重建队列 452.用最少数量的箭引爆气球

柠檬水找零 局部最优&#xff1a;收到20元时优先找零10元5元&#xff0c;不够再找零3个5元&#xff0c;因为5元可以找零20和10&#xff0c;更有用。全局最优&#xff1a;完成所有的找零。 class Solution { public:bool lemonadeChange(vector<int>& bills) {int fi…

c++的发展史、缺省参数、命名空间你了解吗?

1.c的发展历史概述 1.1.什么是c C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的 程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机…

TypeScript实战系列之强力爆破泛型的困扰

目录 介绍开始如何理解泛型语法泛型约束泛型默认值练习后续 介绍 泛型在typescript 中使用频率相当高&#xff0c;也给了初学者相当大的阻碍。希望这一篇文章&#xff0c;能帮助你们爆破它。 开始 下面通过模拟实现一个简易版本的axios来引入泛型的使用 // axios.ts type M…

如何在centos7上配置为桥接模式

一、打开虚拟机的设置页面&#xff0c;设置虚拟机桥接模式如图&#xff1a;选择桥接模式&#xff08;复制物理网络连接可选&#xff09; 二、net0对应桥接模式的配置&#xff0c;如下方式选择 三、 在 CentOS 7 中&#xff0c;通过编辑网络配置文件来配置网络参数。找到 /etc…

(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理

前言 在上一节内容中&#xff0c;我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler&#xff0c;正常情况下其可以处理我们系统的运行时异常&#xff0c;但是无法处理参数验证的异常WebExchangeBindException&#xff0c;所以这里提供另外…

Java 继承

继承概述 继承是面向对象的又一大特征&#xff0c;也是实现软件复用的重要手段。多个类中存在相同属性和行为时&#xff0c;将这些内容抽取到单独一个类中&#xff0c;那么多个类无需再定义这些属性和行为&#xff0c;只要继承那一个类即可。 继承的特点 Java 的继承通过 exte…

最大K长度子数组(c++题解)

题目描述 给定一个整数序列a1,a2 &#xff0c;a3...请你计算长度为 K 的最大连续子数组。 注意&#xff1a;这里的长度为 K&#xff0c;表示连续子数组的元素个数为 K&#xff0c;这里的最大是指 K 个元素的和最大。 输入格式 第一行包含两个整数&#xff1a;N,K。 接下来…

算法随想录第四十八天打卡| 198.打家劫舍 , 213.打家劫舍II , 337.打家劫舍III

详细布置 今天就是打家劫舍的一天&#xff0c;这个系列不算难&#xff0c;大家可以一口气拿下。 198.打家劫舍 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个房间呢&#xff1f;| LeetCode&#xff1a;198.打家劫舍_哔哩哔哩_bilibili 代码随想录 class Solution(…

STM32 E18-D80NK红外避障传感器

E18-D80NK-N是一款红外光电传感器&#xff0c;它同时具备发射和接收功能。通过对发射光进行调制后发出&#xff0c;并通过接收头对反射光进行解调输出。 E18-D80NK-N采用了透镜来增强传感器的性能&#xff0c;使其能够检测更远的距离。根据红外光的特性&#xff0c;不同颜色的…

拒掉了一个双 985 的面试者

下班路上&#xff0c;和一个大佬聊天&#xff0c;他说今天面试&#xff0c;拒掉了一个双 985 的候选人。 候选人背景很好&#xff0c;本科和硕士都是 985 院校毕业&#xff0c;并且是除了清北浙之外&#xff0c;排名非常靠前的 985院校。 本硕专业都是计算机专业&#xff0c;…

Spring Boot + security + jwt 测试安全策略

一、测试概述 主要目的是测试security的用法。因测试搭建mysql和redis比较麻烦&#xff0c;所以我这里将自定义的jwt和用户信息缓存到程序的内存中。 本人测试的项目比较混乱&#xff0c;Spring Boot父类只标出有用的依赖。其子类用的版本为jdk11。后续会继续深入oauth2&#x…

数据库之TiDB基础讲解

文章目录 1 TiDB1.1 引言1.2 TiDB介绍1.3 系统架构1.3.1 TIDB Server1.3.2 PD Server1.3.3 TIKV Server1.3.4 TiKV如何不丢失数据1.3.5 分布式事务支持 1.4 与MySQL的对比1.5 性能测试1.5.1 测试一1.5.2 系统测试报告 2 1 TiDB 1.1 引言 当我们使用 Mysql 数据库到达一定量级…