gpt4 book ai didi

c# - 将包含非表格内容的完整 MVC View 导出到 Excel

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:16 25 4
gpt4 key购买 nike

我正在开发 MVC 应用程序。我们有一个 View ,其中包含 30 个不同的文本框/下拉控件和 2 个表格。

当用户点击导出到Excel时,我需要导出所有的控件和表格数据。

将这些结果导出到 Excel 的最佳方法是什么?

我为 excel 创建了一个单独的 View ,并尝试将 View 导出到 excel。

public ActionResult ExprotToExcel(int id)

{

var model = GetExportModel(id);

HttpContext.Response.AddHeader("content-disposition", "attachment; filename=XX_" + DateTime.Now.ToString() + ".xls");

this.Response.ContentType = "application/vnd.ms-excel";
return View(model);

}

但上面的代码没有格式化 excel 数据。货币和小数字段未格式化。

我们可以格式化上述场景中的数据吗?

请帮助我找到正确的方法。

最佳答案

您可以使用 NPOI 或 Aspose 等 excel 库在内存中创建 excel 书,然后可以将其作为 FileResult 返回。

下面是一个使用 NPOI 将数据行集合写入工作簿的简单粗略示例,然后可以将其作为文件结果返回。

    public FileResult ExportResults(int id)
{
var model = GetExportModel(id);
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet("TestSheet1");
var headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("ID");
headerRow.CreateCell(1).SetCellValue("TestDataCol1");
headerRow.CreateCell(2).SetCellValue("TestDataCol2");
sheet.CreateFreezePane(0, 1, 0, 1);

int rowNumber = 1;
foreach (var datarow in model.data)
{
var datestyle = SetCellStyle(workbook, "dd/MM/yyyy");
var row = sheet.CreateRow(rowNumber++);
row.CreateCell(0).SetCellValue(datarow.Id);
row.CreateCell(1).SetCellValue(datarow.TestData1);
row.CreateCell(2).SetCellValue(datarow.TestData2);

row.Cells[1].CellStyle = datestyle;
row.Cells[2].CellStyle = datestyle;
}

MemoryStream output = new MemoryStream();
workbook.Write(output);
return File(output.ToArray(), "application/vnd.ms-excel", "ExcelData.xls");
}

NPOI 是一个开源项目,可以帮助您读写 xls、doc、ppt 文件。

https://npoi.codeplex.com/

希望这有助于为您指明正确的方向,

关于c# - 将包含非表格内容的完整 MVC View 导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com