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

VS2022 C# 读取 excel 2023年

今天是2023年6月26日,我有一个excel表要读数据,然后放到winform程序来处理,网上的资料太旧,很多用不起来,试了一个可以使用,记录一下:

一、excel文件后缀需要小写。

二、用VS2022建一个winform程序,在NuGet中安装NPOI

三、C#程序代码读取excel数据,感觉速度还是可以,很快:

全部程序代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;namespace readexcel
{public partial class Form1 : Form{public class GT_table{public int id { get; set; }public string t1 { get; set; }public string t2 { get; set; }}public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){DataTable dt = ExcelToDatatable(@"D:\20231025.xlsx", "Sheet1", true);//将excel表格数据存入list集合中//EachdayTX定义的类,字段值对应excel表中的每一列List<GT_table> table = new List<GT_table>();foreach (DataRow dr in dt.Rows){GT_table line = new GT_table{id = Convert.ToInt32(dr[0]),t1 = dr[1].ToString(),t2 = dr[2].ToString(), };listBox1.Items.Add(line.id + "," + line.t1 + "," + line.t2);table.Add(line);}}#region 读取Excel数据/// <summary>/// 将excel中的数据导入到DataTable中/// </summary>/// <param name="fileName">文件路径</param>/// <param name="sheetName">excel工作薄sheet的名称</param>/// <param name="isFirstRowColumn">第一行是否是DataTable的列名,true是</param>/// <returns>返回的DataTable</returns>public static DataTable ExcelToDatatable(string fileName, string sheetName, bool isFirstRowColumn){ISheet sheet = null;DataTable data = new DataTable();int startRow = 0;FileStream fs;IWorkbook workbook = null;int cellCount = 0;//列数int rowCount = 0;//行数try{fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);if (fileName.IndexOf(".xlsx") > 0) // 2007版本{workbook = new XSSFWorkbook(fs);}else if (fileName.IndexOf(".xls") > 0) // 2003版本{workbook = new HSSFWorkbook(fs);}if (sheetName != null){sheet = workbook.GetSheet(sheetName);//根据给定的sheet名称获取数据}else{//也可以根据sheet编号来获取数据sheet = workbook.GetSheetAt(0);//获取第几个sheet表(此处表示如果没有给定sheet名称,默认是第一个sheet表)  }if (sheet != null){IRow firstRow = sheet.GetRow(0);cellCount = firstRow.LastCellNum; //第一行最后一个cell的编号 即总的列数if (isFirstRowColumn)//如果第一行是标题行{for (int i = firstRow.FirstCellNum; i < cellCount; ++i)//第一行列数循环{DataColumn column = new DataColumn(firstRow.GetCell(i).StringCellValue);//获取标题data.Columns.Add(column);//添加列}startRow = sheet.FirstRowNum + 1;//1(即第二行,第一行0从开始)}else{startRow = sheet.FirstRowNum;//0}//最后一行的标号rowCount = sheet.LastRowNum;for (int i = startRow; i <= rowCount; ++i)//循环遍历所有行{IRow row = sheet.GetRow(i);//第几行if (row == null){continue; //没有数据的行默认是null;}//将excel表每一行的数据添加到datatable的行中DataRow dataRow = data.NewRow();for (int j = row.FirstCellNum; j < cellCount; ++j){if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null{dataRow[j] = row.GetCell(j).ToString();}}data.Rows.Add(dataRow);}}return data;}catch (Exception ex){Console.WriteLine("Exception: " + ex.Message);return null;}}#endregion}
}

相关文章:

VS2022 C# 读取 excel 2023年

今天是2023年6月26日&#xff0c;我有一个excel表要读数据&#xff0c;然后放到winform程序来处理&#xff0c;网上的资料太旧&#xff0c;很多用不起来&#xff0c;试了一个可以使用&#xff0c;记录一下&#xff1a; 一、excel文件后缀需要小写。 二、用VS2022建一个winform…...

C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点

Chaikin算法——计算折线对应的平滑曲线坐标点 本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法&#xff0c;通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作&#xff0c;得到平滑的曲线坐…...

day44

什么是前端 前端是所有跟用户直接打交道的都可以称之为是前端 比如&#xff1a;pc页面、手机页面、平板页面、汽车显示屏等等显示出来的都是前端内容 什么是后端&#xff1f; 就是一堆代码&#xff0c;用户不能够直接看到&#xff0c;不直接与用户打交道的都是后端 常见的后端…...

python常用操作汇总

python创建二维数组 python创建三行三列的二维数组&#xff0c;下面方法是错误的&#xff0c;因为是浅拷贝&#xff1a; lst1 [0] * 3 lst2 [lst1] * 3 lst2[1][1] 2 print(lst2) # [[0, 2, 0], [0, 2, 0], [0, 2, 0]]正确姿势 lst [[0 for j in range(3)] for i in ran…...

赴日IT培训 日本IT行业为啥吃香?

确实现在有许多小伙伴尝到了赴日IT的甜头&#xff0c;可是去日本从事IT行业真的很简单吗&#xff1f;为什么日本的IT行业这么缺人呢&#xff1f;那今天小编就跟大家聊一聊日本的IT行业。 咱们先来说说日本的IT行业为什么缺人&#xff1f;其实不只是IT行业&#xff0c;可以说日…...

2016年亚太杯APMCM数学建模大赛A题基于光学信息数据的温度及关键元素含量预测求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 A题 基于光学信息数据的温度及关键元素含量预测 原题再现 光含有能量&#xff0c;在一定条件下可以转化为热。燃烧是一种常见的现象&#xff0c;既能发光又能发热。光和热通常是同时存在的&#xff0c;一般来说&#xff0c;光强度越高&#xf…...

一文讲明:企业知识库的作用和搭建方法

在现代商务环境中&#xff0c;企业面临着大量的信息和知识流动。这些信息和知识散落在各个部门、团队甚至个人之间&#xff0c;难以进行有效的整合和利用。而企业知识库的出现解决了这一问题。它提供了一个统一的平台&#xff0c;将分散的信息汇聚到一个集中的数据库中&#xf…...

技术的新浪潮:从SOCKS5代理到跨界电商的未来

在当今这个日新月异的技术时代&#xff0c;各种创新技术如雨后春笋般涌现。从SOCKS5代理到跨界电商&#xff0c;再到爬虫技术、出海战略和游戏产业的飞速发展&#xff0c;我们正处于一个技术变革的黄金时代。 SOCKS5代理&#xff1a;安全的网络通道 SOCKS5代理是一种网络协议…...

Android intent的一些小使用

目录&#xff1a; 1. Test5.java2. activity_main5.xml3. Empty.java (这个是用来带参数打开Activity按钮用的)4. activity_empty.xml5. 总结 一些基本的问题就不进行说明了&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; // 最后的隐形intent和带返回值没有解决…...

Android 关闭 SELinux 释放权限限制

Android 关闭 SELinux 释放权限限制 接前一篇&#xff0c;后续收到客户需求想要关闭 SELinux 放开安全权限&#xff0c;SELinux 是 Linux 的一个安全子系统&#xff0c;SELinux 主要作用是最大限度地减小系统中服务进程可访问的资源&#xff0c;我们想要放开安全权限只需处理 …...

国际腾讯云自主拼装直播 URL教程!!!

注意事项 创建转码模板 并与播放域名进行 绑定 后&#xff0c;转码配置后的直播流&#xff0c;需将播放地址的 StreamName 拼接为 StreamName_转码模板名称&#xff0c;更多详情请参见 播放配置。 前提条件 已注册腾讯云账号&#xff0c;并开通 腾讯云直播服务。 已在 域名…...

AQS 为什么要使用双向链表?

双向链表 双向链表的特点是它有两个指针&#xff0c;一个指针指向前置节点&#xff0c;一个指针指向后继节点。所以&#xff0c;双向链表可以支持 常量 O(1) 时间复杂度的情况下找到前驱结点&#xff0c;基于这样的特点。双向链表在插入和删除操作的时候&#xff0c;要比单向链…...

Golang 自定义函数库(个人笔记)

1.用字符串连接切片元素&#xff08;类似php implode&#xff09; package mainimport ("fmt""strconv""strings" )func main() {data : []int{104, 101, 108, 108, 111}fmt.Println(IntSliceToString(data, ",")) }func IntSliceToS…...

openlayers 地图组件封装

openlayers 地图组件封装 <template><div class"mapBox"><!-- 地图 --><div ref"map" id"map" class"map"></div><!-- 点位弹窗 --><div id"popup" class"ol-popup">…...

【算法设计与分析】—— 分治算法

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…...

Unable to find GatewayFilterFactory with name TokenRelay

目录 问题分析解决方案参考文档开源项目微服务商城项目前后端分离项目 问题分析 Spring Cloud Gateway 网关作为代理资源服务器&#xff0c;需要将 JWT 传递给下游资源服务器&#xff0c;下面是网关的配置 spring:cloud:gateway:discovery:locator:enabled: true # 启用服务发…...

竞赛 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…...

git基础及原理相关解析

git入门 结构基本操作help提交分支git merge和git rebase对比 拉取 git文档 结构 工作区&#xff1a;电脑目录中能看到的文件暂存区&#xff1a;使用git add *操作提交文件的位置&#xff0c;一般位于.git\index&#xff0c;这个文件里面存储了当前位于暂存区的所有文件的校验…...

【Python机器学习】零基础掌握isotonic_regression等渗回归

遇到了数据不一致的困扰吗? 在市场分析、医疗研究或者其他数据密集型领域,经常会遇到一个问题:如何从一组不完全一致或者有噪音的数据中提取出有用的信息?例如,假设一家餐厅想要根据顾客的评分和消费金额来调整菜单。 顾客评分消费金额(元)顾客年龄访问次数4.21002533.…...

支持宏的文本编辑器提高生产力

场景 我们知道很多文本/代码编辑器支持宏的录制、重放、保存&#xff0c;甚至可以与快捷键命令结合的功能&#xff0c;快速实现重放宏的操作。 如果您的编辑器支持宏这项功能&#xff0c;请多使用 &#x1f603; 宏化自动步骤相当于对编辑器的自动化编程&#xff0c;宏录制可…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...