c#IWorkbook导入excel信息

这篇博客介绍了如何使用NPOI库在C#中操作Excel文件,包括根据文件类型创建IWorkbook对象,创建并写入Sheet,设置单元格内容,以及合并单元格的方法。示例代码详细展示了读取.xls和.xlsx文件,创建新sheet,填充数据,并进行单元格合并的操作流程。

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

c#IWorkbook导入excel信息

IWorkbook定义

IWorkbook的大意是指Excel文件,用NPOI操作excel,第一步都是先获取或声明一个对应wookbook的对象。NPOI读取指定路径下的excel
在这里插入图片描述

xls文件对应的类是:HSSFWorkBook
xlsx文件对应的类是:XSSFWorkBook 这两个类都继承接口:IWorkBook。
在进行操作excel文件时,需要声明出以下四种方可进行操作:

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.Util;

IWorkbook的具体使用

IWorkbook workbook;//
string fileExt = Path.GetExtension(excelPath).ToLower();//
  if (fileExt == ".xlsx")
            {
              
                    workbook = new XSSFWorkbook();//代表Xlsx文件

            } 
            else if (fileExt == ".xls") 
            {
                workbook = new HSSFWorkbook();//代表xls文件
            } 
            else { 
                workbook = null; 
            }
            if(workbook == null) 
            { 
                return;
            }

            ISheet sheet =  workbook.CreateSheet("Sheet1");//写入sheet页,至少有一页


            int iColSum = vSrcLineList.Count() - 1;//垂直直线列表个数
            int iRowSum = hSrcLineList.Count() - 1;//水平直线列表个数
            for(int i = 0;i<iRowSum;i++)
            {
                IRow row = sheet.CreateRow(i);//代表含义

                
                for(int j = 0;j<iColSum;j++)
                {
                    ICell cell = row.CreateCell(j);
                    
                    cell.SetCellValue("");     
                }
            }
            //模板带入完善
                            foreach (KeyValuePair<int, CombinTable> OneCombin in fact_CombinDic)//循环文本字典集
                            {
                                if (OneCombin.Value.iStartRow >= iRowSum || OneCombin.Value.iStartCol >= iColSum)
                                {
                                    continue;//iStartRow代表开始的行号 如果开始的行号大于定义的水平直线数,或者开始列号大于垂直直线数则返回
                                }
                                ICell cell = sheet.GetRow(OneCombin.Value.iStartRow).GetCell(OneCombin.Value.iStartCol);//创建单元格,此时行列为OneCombin.Value.iStartRow和OneCombin.Value.iStartCol)

                                if (textDstDic.ContainsKey(OneCombin.Key))//判断key值是否存在,如果存在则
                                {
                                    cell.SetCellValue(textDstDic[OneCombin.Key].m_Text.Trim());   //导出的时候,在前面加上一个单引号就行了,这就是文本格式的了。
                                }
                                CellRangeAddress region = new CellRangeAddress(OneCombin.Value.iStartRow, OneCombin.Value.iEndRow, OneCombin.Value.iStartCol, OneCombin.Value.iEndCol);
                                sheet.AddMergedRegion(region);
                            }
            //转为字节数组  
            MemoryStream stream = new MemoryStream();
            workbook.Write(stream);
            var buf = stream.ToArray();

            //保存为Excel文件  
            using (FileStream fs = new FileStream(excelPath, FileMode.Create, FileAccess.Write))
            {
                fs.Write(buf, 0, buf.Length);
                fs.Flush();
            }

其中(1) ICell代表设置单元格
ICell cell=sheet.GetRow(OneCombin.Value.iStartRow).GetCell(OneCombin.Value.iStartCol);
(2)CellRangeAddress代表单元格合并
CellRangeAddress(int firstrow ,int lastrow,int firstcol,int lastcol)
四个参数代表起始行号,终止行号,起始列号,终止列号
(3) sheet.AddMergedRegion(region);代表将region单元格添加进去
(4)sheet.createRow(i)—创建Excel中一行
(5)sheet.getRow(i)的区别 --读取Excel中一行

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值