VS2022 C# 读取 excel 2023年

news2024/12/23 10:32:17

今天是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

}
}

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

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

相关文章

关于腾讯云轻量应用服务器性能测评,看这一篇文章就够了

腾讯云轻量应用服务器性能如何&#xff1f;为什么便宜是不是性能不行&#xff1f;腾讯云百科txybk.com从轻量应用服务器的CPU型号、处理器主频、内存、公网带宽、月流量和系统盘多方面来详细测评轻量性能&#xff0c;轻量应用服务器性价比高&#xff0c;并不是性能不行&#xf…

rk3588 SD 卡镜像扩容

先用一个卡复制镜像 Win32DiskImager 操作: https://blog.csdn.net/FL1623863129/article/details/118945754 复制之后镜像正常工作 但是仍旧只能显示32G 扩容 下载安装gparted https://blog.csdn.net/weixin_44589540/article/details/121580883 resize 拖过来就完了…

如何实现Android视音频数据对接到GB28181平台(SmartGBD)

为什么要开发Android平台GB28181&#xff1f; 在做Android平台GB28181接入模块之前&#xff0c;我们在RTMP推送播放、RTSP轻量级服务、转发、播放这块&#xff0c;已经有很多年的经验&#xff0c;这意味着&#xff0c;我们不需要重复造轮子&#xff0c;已有屏幕、摄像头或编码…

Keil uVision 5 MDK版软件安装包下载及安装教程(最详细图文教程)

目录 一.简介 二.安装步骤 软件&#xff1a;Keil uvision5版本&#xff1a;MDKv518语言&#xff1a;中文/英文大小&#xff1a;377.01M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.59GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接…

【Linux】第三站:Linux基本指令(二)

文章目录 一、通配符 *二、man指令三、cp指令1.先给一个文件里面写入数据2. cp指令拷贝普通文件3.cp指令拷贝文件目录4.常用的选项总结 四、mv指令1.mv命令简介2.使用 五、一些插曲1.一些注意事项2.指令的本质3.再谈输出重定向4.追加重定向5.输入重定向 六、cat指令七、more指令…

liunx Centos-7.5上 rabbitmq安装

在安装rabbitmq中需要注意&#xff1a; 1、rabbitmq依赖于erlang&#xff0c;需要先安装erlang 2、erlang和rabbitmq版本有对应关系 可参考网页&#xff1a;https://www.rabbitmq.com/which-erlang.html 第一步&#xff0c;安装编译工具及库文件,如果服务器上已经有了&…

大事务导致数据库恢复时间长

背景 客户的一套系统从凌晨开始出现运行缓慢&#xff0c;重启SQL Server服务后一个主要的数据库一直处在正在恢复的状态&#xff0c;多次重启SQL Server服务和服务器无果后请我们协助处理。 现象 在SSMS中看到数据库是正在恢复的状态&#xff0c;而且不能被访问。 分析 启动SQ…

全球医疗产品畅销:跨境电商的生命科技

随着数字化时代的到来&#xff0c;跨境电商不仅仅是商业领域的一种革命性力量&#xff0c;更是生命科技行业的重要推动者。这一融合带来了全球医疗产品畅销的新时代&#xff0c;为世界各地的消费者带来了前所未有的便利和机会。本文将深入探讨这一跨境电商的生命科技领域&#…

C# 高级 <一>

一、 特性&#xff08;Attribute&#xff09; .NET 框架提供了三种预定义特性&#xff1a; AttributeUsageConditionalObsolete a. AttributeUsage 它描述了如何使用一个自定义特性类。它规定了特性可应用项目的类型。语法如下&#xff1a; [AttributeUsage(validon,AllowM…

万圣节倒计时:如何在TikTok上推动商品广告

万圣节是一个商机充足的季节&#xff0c;对于广告商和品牌来说&#xff0c;这是一个绝佳的机会。TikTok&#xff0c;作为一款全球短视频应用&#xff0c;提供了一个独特的平台&#xff0c;可以将商品广告巧妙地与万圣节元素结合&#xff0c;吸引年轻受众的注意力。本文将深入探…

想要完美录屏?这几款录屏大师,不容错过

在数字媒体和游戏产业的不断崛起下&#xff0c;屏幕录制技术变得越来越重要。无论是捕捉游戏精彩瞬间、创作教程视频&#xff0c;还是与朋友分享有趣时刻&#xff0c;录屏工具成为了当今数字生活不可或缺的一部分。本文将介绍三款好用的录屏大师&#xff0c;无论您是一位游戏爱…

Gartner:2024年优秀战略技术趋势

到2024年&#xff0c;人工智能将在企业中占据主导地位&#xff0c;而云服务、安全性和可持续性的影响力也将上升。 到2024年&#xff0c;人工智能将在企业中占据主导地位&#xff0c;而云服务、安全性和可持续性的影响力也将上升。 Gartner表示&#xff0c;人工智能和智能应用…

Ubuntu20.04下安装MySQL8环境

Ubuntu20.04下安装MySQL8环境 1.下载MySQL客户端和服务器2.配置MySQL3.测试MySQL4.设置MySQL服务开机自启动5.修改root密码MySQL数据库基本使用启动MySQL数据库服务重启MySQL数据库服务停止MySQL数据库服务查看MySQL运行状态设置MySQL服务开机自启动停止MySQL服务开机自启动MyS…

Unity的galgame形式对话系统工具

这段代码用于读取表格 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using OfficeOpenXml; using System.IO; using UnityEngine.Networking; using UnityEngine.UI; using Random UnityEngine.Random;public class Plots…

[计算机提升] 命令、批处理介绍

1.12 命令、批处理 1.12.1 命令 在Windows系统中&#xff0c;命令通常指的是命令行指令&#xff08;或称为命令行命令&#xff09;&#xff0c;也就是通过命令提示符&#xff08;Command Prompt&#xff09;或者PowerShell运行的特定命令。这些命令可以让用户与操作系统进行交…

敏捷or瀑布: Salesforce项目应该选哪一个?

在项目管理方法和框架不断扩展的世界中&#xff0c;敏捷和瀑布是两种最著名的项目管理方法。它们在Salesforce实施中都很流行&#xff0c;但各自适合不同类型的项目。 选择正确的方法将直接影响到项目的预算、日程安排和有效执行&#xff0c;对Salesforce项目的成功至关重要。…

windows如何查看电脑IP地址

介绍两种查看电脑IP的方式 一、第一种方式 1、在电脑左下角搜索网络连接 2、鼠标右键你目前连接的网络&#xff08;wifi就点wifi 网线就点以太网&#xff09;&#xff1b;选择里面的状态。 3、点击详细信息&#xff0c;这里的IPv4地址就是你电脑的IP。 二、第二种 1、win…

LCR 146. 螺旋遍历二维数组

LCR 146. 螺旋遍历二维数组 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; LCR 146. 螺旋遍历二维数组 https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/description/ 完成情况&#xff1a; 解…

记一次企业微信的(CorpID)和密钥(Secret)泄漏的利用案例

文章目录 一、介绍二、利用过程1、获取AccessToken2、获取企业微信接口IP段3、获取企业微信回调IP段4、通过部门ID,查看返回的ID5、通过部门ID,查看用户列表6、通过便利ID,发现用户信息泄露,可以进行提交报告7、通过添加接口,添加企业账号8、登陆企业账号进行测试三、参考…

2023年中国医疗器械供应链服务平台发展趋势分析:向国家高端化市场发力[图]

医疗器械供应链服务主要分为全流程供应链服务与院内SPD服务&#xff0c;同时全流程供应链服务主要分为市场、仓储物流与金融三大服务。在SPD数字化赋能下&#xff0c;大数据、云计算等技术支撑促进一站式数字化供应链业务协同平台&#xff0c;带动了整体医疗器械供应链服务的发…