C# 用NPOI读取EXCEL

news/2024/7/21 7:35:03 标签: excel

1. 复制DLL文件

ICSharpCode.SharpZipLib.dll
NPOI.dll
NPOI.OOXML.dll
NPOI.OpenXml4Net.dll
NPOI.OpenXmlFormats.dll

2. 在工程中添加引用

3. 

using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.OpenXml4Net;

4. 操作EXCEL

 private void button2_Click(object sender, EventArgs e)
        {
            string strFileName;
            FileStream fs;
            string strTemp;

            IWorkbook myBook = null;
            ISheet mySheet = null;

            strFileName = @"H:\流水_2021.7-2021.12.xlsx";
            fs = File.OpenRead(strFileName);

            /*
                xlsx版本,需要是 new XSSFWorkBook
                xls版本,需要是  new HSSFWorkBook
             */

            strTemp = strFileName.Substring(strFileName.Length - 5, 5);
            textBox2.Text = strTemp;

            //打开工作簿
            if ( strTemp == ".xlsx")
            {
                myBook = new XSSFWorkbook(fs);
            }
            else
            {
                myBook = new HSSFWorkbook(fs);
            }
            

            mySheet = myBook.GetSheetAt(0); //获取第一个工作表

            if(mySheet==null)
            {
                myBook.Close();
                myBook = null;
                return;
            }

            //读取单元格内容
            strTemp = mySheet.GetRow(0).GetCell(0).ToString();

            textBox1.Text = strTemp;

            if( myBook != null)
            {
                myBook.Close();
                myBook = null;
            }
        }
    }

5. 其他操作

mySheet.LastRow  

IRow myRow = mySheet.GetRow(0)  //获取第一行

ICell myCell = myRow.GetCell(0)        //获取第一行第一列单元格

myBook.NumberOfSheeets  //获取总的表数
myBook.GetSheetAt(i)    //获取第i张表,表从0开始

myRow.Cells[2].ToString() //获取单元格内容,如果是公式的话,则返回计算公式

如果不想获取计算公式,直接获取计算结果,则使用
myRow.Cells[2].NumericCellValue
 ISheet.GetRowEnumerator() 获得某一个ISheet的所有IRow
 工作表中第一个有数据行的行号    ISheet.FirstRowNum
    
工作表中最后一个有数据行的行号    ISheet.LastRowNum
    
一行中第一个有数据列的列号    IRow.FirstCellNum
    
一行中最后一个有数据列的列号    IRow.LastCellNum
    
获取sheet所有合并单元格索引    ISheet.NumMergedRegions

其他后续再补充。今天只学了这么一点  :)

找到一个大佬的文章,链接:

NPOI使用手册 (操作Excel)_zou_ys88的博客-CSDN博客_npoi使用手册


http://www.niftyadmin.cn/n/101653.html

相关文章

python 数据结构习题

旋转图像给定一个nn的二维矩阵表示一个图像。将图像顺时针旋转90度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。例如,给定matrix[[1,2,3],[4,5&#x…

行测-判断推理-图形推理-样式规律-加减异同

图1图2图3选D图1图2都有的线,则消除图1图2只有一幅图里有的线,则保留选C第一列和第二列都有的线,则消除第一列和第二列只有一幅图里有的线,则保留选A第一列顺时针旋转90,再与第二列去同存异选D第一列和第二列去同存异&…

20_FreeRTOS低功耗模式

目录 低功耗模式简介 STM32低功耗模式 Tickless模式详解 Tickless模式相关配置 实验源码 低功耗模式简介 很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等。 一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。 FreeRTOS也…

2/26 考试总结

时间安排 8:30–8:50 读题,T1貌似最可做一些。 8:50–9:40 T1,有暴力的状压 dp 。考虑正解怎么做,一个暴力的想法是枚举最后一个区间是哪个,那么要计算两边都被覆盖的方案数,这个有个大致想想法。 9:40–10:00 T2, f 可以用线形基求&#xf…

链表(一):移除链表元素、设计链表等力扣经典链表题目

203.移除链表元素相关题目链接:力扣 - 移除链表元素题目重现给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。思路链表的删除操作如上图所示,我们需要先找到要删除的…

linux 防火墙管理-firewalld

什么是Firewalld 当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…

SQLAlchemy

文章目录SQLAlchemy介绍SQLAlchemy入门使用原生sql使用orm外键关系一对多关系多对多关系基于scoped_session实现线程安全简单表操作实现方案CRUDFlask 集成 sqlalchemySQLAlchemy 介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系…

(十八)操作系统-进程互斥的软件实现方法

文章目录一、知识总览二、单标志法三、双标志先检查法四、双标志后检查法五、Peterson算法六、总结一、知识总览 二、单标志法 算法思想:两个进程在访问临界区后,会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进…