C#+NPOI导出

1.首先下载DotNetCore.NPOI包,版本根据自己的项目进行对应

2.在控制器上复制使用就可以了,修改获取数据的表(这个是获取表里所有列对应行的数据)
public IActionResult ExportExcel()
{
string sql = "select * from ";
// 获取数据
DataTable dt = SQLHelper.GetTable(sql);

  // 创建Excel工作簿
  IWorkbook workbook = new XSSFWorkbook();
  ISheet sheet = workbook.CreateSheet("导出数据");

  // 创建标题行
  IRow headerRow = sheet.CreateRow(0);
  for (int i = 0; i < dt.Columns.Count; i++)
  {
      headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
  }

  // 填充数据
  for (int i = 0; i < dt.Rows.Count; i++)
  {
      IRow row = sheet.CreateRow(i + 1);
      for (int j = 0; j < dt.Columns.Count; j++)
      {
          object value = dt.Rows[i][j];
          row.CreateCell(j).SetCellValue(value?.ToString() ?? "");
      }
  }

  // 返回文件
  using (var stream = new MemoryStream())
  {
      workbook.Write(stream);
      return File(stream.ToArray(),
          "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
          $"导出数据_{DateTime.Now:yyyyMMdd}.xlsx");
  }

}

3.在控制器上复制使用就可以了,修改获取数据的表(这个是获取表里指定列对应行的数据)

public IActionResult ExportSelectedColumns()
{
string sql = "select * from ";
// 1. 获取完整数据
DataTable fullData = SQLHelper.GetTable(sql);

 // 2. 指定要导出的列(根据您的需求调整)
 string[] selectedColumns = { "1", "2", "3", "4" ,"5"};

 // 3. 创建Excel工作簿
 IWorkbook workbook = new XSSFWorkbook();
 ISheet sheet = workbook.CreateSheet("导出数据");

 // 4. 创建标题行(只包含选定列)
 IRow headerRow = sheet.CreateRow(0);
 for (int i = 0; i < selectedColumns.Length; i++)
 {
     headerRow.CreateCell(i).SetCellValue(selectedColumns[i]);
 }

 // 5. 填充数据(只导出选定列)
 for (int rowIdx = 0; rowIdx < fullData.Rows.Count; rowIdx++)
 {
     IRow row = sheet.CreateRow(rowIdx + 1);
     int cellIdx = 0;

     foreach (string colName in selectedColumns)
     {
         object value = fullData.Rows[rowIdx][colName];
         row.CreateCell(cellIdx++).SetCellValue(value?.ToString() ?? "");
     }
 }

 // 6. 返回文件
 using (var stream = new MemoryStream())
 {
     workbook.Write(stream);
     return File(stream.ToArray(),
         "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
         $"导出数据_{DateTime.Now:yyyyMMdd}.xlsx");
 }

}

posted @ 2025-06-24 09:49  奥术  阅读(37)  评论(0)    收藏  举报