.NET NPOI 根据Excel模板导出Excel、直接生成Excel

风华绝代 2024-03-20 ⋅ 207 阅读

简介

在软件开发过程中,经常会遇到需要导出Excel文件的需求。而NPOI是一款常用的.NET库,可以方便地对Excel文件进行操作。本文将介绍如何使用NPOI根据Excel模板导出Excel文件以及如何直接生成Excel文件。

1. 根据Excel模板导出Excel

在使用NPOI根据Excel模板导出Excel文件时,需要先准备好一个Excel模板,然后使用NPOI来填充模板中的数据。以下是一个示例代码:

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

public stream ExportExcelByTemplate(DataTable data, string templatePath)
{
    using (FileStream file = new FileStream(templatePath, FileMode.Open, FileAccess.Read))
    {
        HSSFWorkbook workbook = new HSSFWorkbook(file);
        ISheet sheet = workbook.GetSheetAt(0);
        
        int rowIndex = 1;
        foreach (DataRow row in data.Rows)
        {
            IRow dataRow = sheet.CreateRow(rowIndex++);
            
            for (int columnIndex = 0; columnIndex < row.ItemArray.Length; columnIndex++)
            {
                dataRow.CreateCell(columnIndex).SetCellValue(row[columnIndex].ToString());
            }
        }
        
        using (MemoryStream stream = new MemoryStream())
        {
            workbook.Write(stream);
            return stream;
        }
    }
}

上述代码中,我们使用NPOI的HSSFWorkbook类来打开Excel模板文件,然后获取模板中的工作表。接下来,我们可以使用CreateRow()CreateCell()方法来创建行和单元格,并将数据填充到单元格中。最后,使用MemoryStream将工作簿写入到内存流中,返回该流。

2. 直接生成Excel

除了使用Excel模板导出Excel文件,NPOI还提供了直接生成Excel文件的功能。以下是一个示例代码:

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

public stream GenerateExcel(DataTable data)
{
    HSSFWorkbook workbook = new HSSFWorkbook();
    ISheet sheet = workbook.CreateSheet("Sheet1");
    
    int rowIndex = 0;
    foreach (DataRow row in data.Rows)
    {
        IRow dataRow = sheet.CreateRow(rowIndex++);
        
        for (int columnIndex = 0; columnIndex < row.ItemArray.Length; columnIndex++)
        {
            dataRow.CreateCell(columnIndex).SetCellValue(row[columnIndex].ToString());
        }
    }
    
    using (MemoryStream stream = new MemoryStream())
    {
        workbook.Write(stream);
        return stream;
    }
}

上述代码中,我们创建了一个新的工作簿和工作表,然后按照相同的方式填充数据。最后,将工作簿写入到内存流中并返回。

结论

使用NPOI可以方便地根据Excel模板导出Excel文件,也可以直接生成Excel文件。无论是哪种方式,都可以实现灵活、高效的Excel文件处理。使用NPOI,我们可以轻松地满足导出Excel的需求,同时也可以根据具体项目的要求对Excel操作进行定制。


全部评论: 0

    我有话说: