C#中利用NPOI包操作Excel文件

利用NPOI包可以非常方便地创建、修改导出Excel文件。

下载npoi.2.5.2.nupkg及其依赖项

首先需要通过NuGet管理器导入NPOI包,并且在使用前加入如下引用:

using NPOI.SS.UserModel;    //提供ISheet、IRow、ICell等接口
using NPOI.XSSF.UserModel;  //提供相关类操作扩展名为xlsx的2007之后版本Excel文件
using NPOI.HSSF.UserModel;  //提供相关类操作扩展名为xls的2007之前版本Excel文件

完整代码如下

using System;
using System.IO;            //提供文件流文件和文件流操作所需类
using NPOI.SS.UserModel;    //提供ISheet、IRow、ICell等接口
using NPOI.XSSF.UserModel;  //提供相关类操作扩展名为xlsx的2007之后版本Excel文件

namespace MyExcel {
    class MyExcel {
        //创建一个新Excel文件并导出
        public void CreateExcel() {
            //创建一个工作簿对象
            XSSFWorkbook wb = new XSSFWorkbook();
            //插入指定名称的工作表
            ISheet sheet = wb.CreateSheet("mysheet");
            //插入指定行,在此行对象上创建单元格,并写入内容
            IRow row = sheet.CreateRow(2);  //参数为工作表的行号
            for(int i = 0;i<5;i++) {
                ICell cell = row.CreateCell(i);
                cell.SetCellValue(i);
            }
            //定义一个文件流对象,将工作簿对象保存为Excel文件
            FileStream fs = new FileStream("自定义文件名",FileMode.OpenOrCreate,FileAccess.ReadWrite);
            wb.Write(fs);
            fs.Close(); fs.Dispose();
        }
        //打开已有Excel文件,修改内容后再导出
        public void OpenExcel() {
            FileStream fs = new FileStream("自定义文件名",FileMode.Open,FileAccess.Read);
            //创建工作簿对象
            XSSFWorkbook wb = new XSSFWorkbook(fs);
            fs.Close(); fs.Dispose();
            //根据工作表名获取工作簿对象,也可通过索引获取工作表wb.GetSheetAt(int index)
            ISheet sheet = wb.GetSheet("mysheet");
            //更改指定单元格内容,如果该单元格为null则会引发异常,需要对指定行和单元格进行判断
            //sheet.GetRow(3).Cells[2].SetCellValue("内容");    //假设修改内容的单元格不为null可以这样修改内容
            IRow row = sheet.GetRow(3);
            if(row==null) row=sheet.CreateRow(3);
            ICell cell = row.GetCell(2);    //ICell cell=row.Cells[2];
            if(cell==null) cell=row.CreateCell(2);
            cell.SetCellValue("内容");
            //定义一个文件流对象,将工作簿对象保存为Excel文件
            //读取指定单元格内容:string str=cell.StringCellValue;
            MemoryStream ms = new MemoryStream();
            wb.Write(ms); wb.Close();
            byte[] bytes= ms.ToArray();
            ms.Close();ms.Dispose();
            //Mvc中返回文件
            //return File(bytes,"application/x-zip-compressed","文件名");
        }
    }
}

你可能感兴趣的:(C#,c#,excel)