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。也许 datareader 可以替换为
Database.FromSQLRawAsync()
并使用动态。
ClosedXML
需要 XLCellValue
作为单元格值。有工厂方法可以从 XLCellValue
创建适当的
object
worksheet.Cell(currentRow, j + 1).Value = XLCellValue.FromObject(dr.GetValue(j));