好记性不如烂笔头。

mvc web api 利用NPIO框架导出excel

先通过NuGet安装NPIO框架组件。

[HttpGet("export")]
public FileResult Export()
{
    HSSFWorkbook book = new HSSFWorkbook();
    ISheet sheet = book.CreateSheet("Sheet1");
    int cellIndex = 0;
    var row = sheet.CreateRow(0);
    row.CreateCell(cellIndex++).SetCellValue("列1");
    row.CreateCell(cellIndex++).SetCellValue("列2");


    int rowIndex = 1;
    var result = GetDataSource();//数据通过Dapper查询,返回dynamic类型

    foreach (var item in result.Item1)
    {
        cellIndex = 0;
        row = sheet.CreateRow(rowIndex);
        row.CreateCell(cellIndex++).SetCellValue("列1值");
        row.CreateCell(cellIndex++).SetCellValue("列2值");
        rowIndex++;
    }

    using (MemoryStream ms = new MemoryStream())
    {
        book.Write(ms);
        ms.Seek(0, SeekOrigin.Begin);

        return File(ms.ToArray(), "application/vnd.ms-excel", $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.xls");
    }

}

dynamic GetDataSource()
{
    return new object();
}