ASP.NET Core 8 MVC 应用程序控制器应该创建一个 Excel 电子表格,其中包含来自任意 SQL 选择中的列(数字、字符串、日期、逻辑)的类型数据。
我尝试了这个代码:
public async Task<IActionResult> RawData()
{
// https://blog.elmah.io/export-data-to-excel-with-asp-net-core/
using var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Test");
using IDataReader dr = ExecuteReader("select * from foo", out IDbConnection _);
int currentRow= 1 ;
while (dr.Read())
{
for (var j = 0; j < dr.FieldCount; j++)
if (dr.GetFieldType(j) != typeof(byte[]))
worksheet.Cell(currentRow, j + 1).Value = dr.GetValue(j).ToString();
currentRow++;
}
using var stream = new MemoryStream();
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "test.xlsx");
}
数字、双精度数、浮点数、整数、布尔值在 Excel 中显示为字符串。
删除ToString()
使用
worksheet.Cell(currentRow, j + 1).Value = dr.GetValue(j);
引发编译错误。
如何从IDataReader
Excel 或 ods 文件中获取输入的数据?
应用程序使用 Entity Framework Core。也许可以替换 datareaderDatabase.FromSQLRawAsync()
并动态使用。
ClosedXML
需要XLCellValue
单元格值。有工厂方法可以XLCellValue
从中创建适当的object