编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

C#使用NPOI接口追加报表数据

wxchong 2024-06-22 21:10:14 开源技术 10 ℃ 0 评论

NPOI是一个C#中操作EXCEL比较方便的库,在已有报表模板情况下,将数据导出到报表模板并存储为新报表文件步骤如下:

  1. 打开报表模板
  2. 写入数据
  3. 保存报表文件

在实际使用中报表模板文件可能仅保留特定行模板数据,当数据超出报表保留行数时增加新行,使用NPOI增加新行并保留数据格式操作步骤如下:

  1. 获取行
  2. 判定行是否为空,若为空创建新行并设定行内单元格样式
  3. 写入数据
IWorkbook workbook = new XSSFWorkbook("报表模板.xlsx");
ISheet sheet = workbook.GetSheetAt(0);
IRow row;
int rowCount = 0;

while (sdr.Read())
{
    //跳过表头
    int rowIdx = rowCount + 2;
    int cellIdx = 0;

    row = sheet.GetRow(rowIdx);

    //超出预留数据行
    if (null == row)
    {
        row = sheet.CreateRow(rowIdx);

        //源样式行
        IRow rowFirstData = sheet.GetRow(3);

        //设定Cell边框
        for (int i = 0; i < 8; ++i)
        {
            ICell cell = row.CreateCell(i);
            ICell cellSrc = rowFirstData.GetCell(i);
            cell.CellStyle = cellSrc.CellStyle;
        }

        row.RowStyle = rowFirstData.RowStyle;
    }

    //序号 
    row.GetCell(cellIdx++).SetCellValue(rowCount + 1);
    //.....
    //合格判定
    bool isOk = Convert.ToBoolean(sdr["Judge"]);
    row.GetCell(cellIdx++).SetCellValue(isOk ? "是" : "否");

    ++rowCount;
}

//保存到新文件
using (var fsDst = new FileStream(sTargetFile, FileMode.Create, FileAccess.Write))
{
    workbook.Write(fsDst);
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表