NPOI--------------.Net操作Excel初步使用(导出)

背景

因公司项目需要添加数据导出功能故此添加,找了几种方式发现该方式具有 无需依赖本机安装office环境,使用灵活等优点故采用此方式。

安装

Nuget 直接安装NPOI即可

使用方式

1.根据需要使用2003或者2007的不同选择不同创建操作对象 

IWorkbook fileWorkbook;
            try
            {
                fileWorkbook = new XSSFWorkbook();
            }
            catch
            {
                fileWorkbook = new HSSFWorkbook();
            }

2.Excel的操作必须要建立在Sheet的基础上 所以需要先建立一个Sheet

    ISheet sheet = fileWorkbook.CreateSheet("Sheet1") as ISheet;

3.根据需要 可以设置列宽

    sheet.SetColumnWidth(0, 50 * 256);//设置宽度首列

其中 第一个参数为列索引 第二个参数为字符数   例子代表允许显示50个字符  如100字符 则为100* 256

4.创建行

IRow row = sheet.CreateRow(rowIndex);

注: 行宽度直接用row实例即可修改 如:row.Height=30 * 20;

5.创建单元格

ICell cellTitle = row.CreateCell(0);
cellTitle.SetCellValue($"销售汇总({StartDate}至{EndDate})");

注: 

  1.0为列索引

  2.第二行为赋值方式展示

6.设置居中

//设置单元格格式 居中
            ICellStyle cellstyle = fileWorkbook.CreateCellStyle();
            cellstyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
            cellstyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
            cellTitle.CellStyle = cellstyle;

直接赋值到所在单元格cellStyle属性即可

7.合并单元格

sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 5));//合并单元格 0行0列到0行5列

参数从左到右分别为 起始行号 结束行号 起始列号 结束列号

8.保存到文件

public string OutputClient(IWorkbook fileWorkbook)
        {
            //转为字节数组
            MemoryStream stream = new MemoryStream();
            fileWorkbook.Write(stream);
            var buf = stream.ToArray();
            var path = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Export");
            string fileName = Path.Combine(path, $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xls");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            //保存为Excel文件
            using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                fs.Write(buf, 0, buf.Length);
                fs.Flush();
            }
            return fileName;
        }
保存文件方法

这里提供一个通用的保存方法 保存到exe 文件目录下的Export 文件夹 没有改文件夹会自动创建 文件名为日期到毫秒

 

posted @ 2019-06-25 14:25  nontracey  阅读(227)  评论(0编辑  收藏  举报