NPOI用法之Excel基本操作

本文详细介绍如何使用NPOI库在.NET环境中进行Excel的基本操作,包括创建Sheet、单元格,完成Excel创建,移除Sheet,按名称或索引获取Sheet,获取所有行或特定行,获取单元格对象,合并单元格等。并提供了一个完整的示例,展示如何使用NPOI创建一个包含多个Sheet和合并单元格的Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NPOI用法之Excel基本操作

前言
使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NOPI相关dll下载https://pan.baidu.com/s/1kBNQMuwxSmo7FQsvEV5Flw,提取码:h2g6

  1. 创建ExcelSheet
 /// <summary>
       /// 创建Sheet
       /// </summary>
       /// <param name="hssfworkbook"></param>
       /// <param name="sheetName">sheet名</param>
       /// <returns></returns>
        public List<HSSFSheet> creatExcelSheet(ref HSSFWorkbook hssfworkbook,List<string> sheetName)
        {
            List<HSSFSheet> ExcelSheet = new List<HSSFSheet>();

            hssfworkbook = new HSSFWorkbook();//创建excel
            HSSFSheet sheet = null;
            for (int i = 0; i < sheetName.Count; i++)
            {
                sheet = (HSSFSheet)hssfworkbook.CreateSheet(sheetName[i]);//创建sheet
                ExcelSheet.Add(sheet);
            }
            return ExcelSheet;
        }

2、创建单元格

  /// <summary>
        /// 创建单元格
        /// </summary>
        /// <param name="ExcelSheet">sheet名</param>
        /// <param name="rowIndex">第rowIndex行</param>
        /// <param name="cellIndex">第cellIndex列</param>
        /// <param name="cellValue">单元格值</param>
        public void creatExcelCell(HSSFSheet ExcelSheet, int rowIndex, int cellIndex, string cellValue)
        {
            HSSFRow excelRow = (HSSFRow)ExcelSheet.CreateRow(rowIndex);//创建行
            ICell excelCell= excelRow.CreateCell(cellIndex);//创建单元格
            excelCell.SetCellValue(cellValue);
        }

3、完成Excel创建

/// <summary>
        /// 完成Excel创建
        /// </summary>
        /// <param name="hssfworkbook"></param>
        /// <param name="excelPath">excel路径</param>
        /// <param name="excelName">excel名</param>
        /// <param name="deleteCurrenExcel">若excel存在,是否删除</param>
        public void createExcelFinish(HSSFWorkbook hssfworkbook, string excelPath, string excelName, bool deleteCurrenExcel)
        {
            if (deleteCurrenExcel == true)
            {
                //若文件存在,则删除
                if (File.Exists(excelPath + excelName))
                {
                    File.Delete(excelPath + excelName);
                }
            }
            FileStream fileStream = new FileStream(excelPath + excelName, FileMode.Create);//创建文件流
            hssfworkbook.Write(fileStream);//excel写入文件流
            fileStream.Close();//关闭文件流
            MessageBox.Show("文件" + excelName + "创建完成!", "提示");
        }

4、移除sheet

/// <summary>
        /// 移除sheet
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetIndex">sheet索引</param>
        public void removeSheet(HSSFWorkbook workbook,int sheetIndex)
        {
            workbook.RemoveSheetAt(sheetIndex);
        }

5、按名称获得Sheet对象

/// <summary>
        /// 按名称获得Sheet对象     
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetName">sheet名称</param>
        /// <returns></returns>
        public HSSFSheet getSheetByName(HSSFWorkbook workbook,string sheetName)
        {
            HSSFSheet sheet = (HSSFSheet)workbook.GetSheet(sheetName);
            return sheet;
        }

6、根据索引获得Sheet对象

/// <summary>
        /// 根据索引获得Sheet对象                     
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetIndex">sheet索引</param>
        /// <returns></returns>
        public HSSFSheet getSheetByIndex(HSSFWorkbook workbook, int sheetIndex)
        {
            HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(sheetIndex);
            return sheet;
        }

7、获得某一个ISheet的所有IRow

/// <summary>
        /// 获得某一个ISheet的所有IRow
        /// </summary>
        /// <param name="sheet"></param>
        /// <returns></returns>
        public IEnumerator getSheetRow(HSSFSheet sheet)
        {
            IEnumerator SheetRow = sheet.GetRowEnumerator();
            return SheetRow;

        }

8、 获得某一特定行

/// <summary>
        /// 获得某一特定行
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowIndex">行索引</param>
        /// <returns></returns>
        public HSSFRow getRowByIndex(HSSFSheet sheet,int rowIndex)
        {
            HSSFRow row =(HSSFRow)sheet.GetRow(rowIndex);
            return row;
        }

9、获取Excel的单元格对象

  /// <summary>
        /// 获取Excel的单元格对象
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowIndex"></param>
        /// <param name="cellIndex"></param>
        /// <returns></returns>
        public HSSFCell getExcelCell(HSSFSheet sheet, int rowIndex, int cellIndex)
        {
            HSSFCell cell = (HSSFCell)sheet.GetRow(rowIndex).GetCell(cellIndex);
            return cell;
        }

10、合并单元格

 /// <summary>
        /// 合并单元格
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="regionDtata">合并单元格的左上角单元格及右下角单元格</param>
        public void RegionCell(HSSFWorkbook workbook,int sheetIndex,int[] regionDtata)
        {
            HSSFSheet sheet=getSheetByIndex(workbook, sheetIndex);
            sheet.AddMergedRegion(new CellRangeAddress(regionDtata[0], regionDtata[1], regionDtata[2], regionDtata[3]));
            HSSFCell cell= getExcelCell(sheet, regionDtata[0], regionDtata[1]);

            //设置居中
            HSSFCellStyle style = (HSSFCellStyle)workbook.CreateCellStyle();
            style.VerticalAlignment = VerticalAlignment.CENTER;
            style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
            cell.CellStyle = style;
        }

11、示例执行NOPI创建Excel

private void 创建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string excelPath = @"C:\Users\njtq\Desktop\NOPI\";
            string excelName = "test.xls";
            List<string> sheetName = new List<string>();
            sheetName.Add("sheet1");
            sheetName.Add("sheet2");
            HSSFWorkbook hssfworkbook=null;


            //创建sheet
            List<HSSFSheet> ExcelSheet = creatExcelSheet(ref hssfworkbook, sheetName);
             
            //创建cell
            creatExcelCell(ExcelSheet[0], 0, 0, "标题");
            int[] regionData = new int[4] { 0, 0, 0, 4 };

            //合并单元格
            RegionCell(hssfworkbook,0, regionData);

            //创建完成
            createExcelFinish(hssfworkbook, excelPath, excelName, true);
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mekeater

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值