[英]Export to excel returns Blank sheet
I am trying to export a datatable using closed xml but it gives me blank sheet. 我正在尝试使用封闭的xml导出数据表,但它给了我空白。 Here is my code
这是我的代码
[HttpPost]
public FileResult ExportExcel()
{
List<ProductModel> productDetails = (List<ProductModel>)Session["CartItems"];
System.Data.DataTable dtExcel = CategoryDAL.ToDataTable(productDetails);
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(dtExcel);
using (MemoryStream stream = new MemoryStream())
{
wb.SaveAs(stream);
return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
}
}
When I debug I can see that datatable has the data but it exports a blank one 当我调试时,我可以看到数据表中有数据,但是它导出了一个空白
Hey I've written an excelexporter for our proposes on my own. 嘿,我已经为我们的建议写了一个excelexporter。 I used this tutorial to get started with excel exporting:
我使用本教程来开始excel导出:
and here is a code snippet how I run an excel export in a controller: 这是我如何在控制器中运行Excel导出的代码片段:
public async Task<FileResult> DownloadExcel(long id, CancellationToken token)
{
var entites= await _someRepository.GetSomethingAsync(id, token).ConfigureAwait(false);
var report = _excelExporter.Export(entites.OrderByDescending(d => d.Date));
return File(report, MimeTypes.GetMimeType("excel.xlsx"), $"entities.xlsx");
}
Generating the excel spreadsheet is done with a memory stream. 生成Excel电子表格是通过内存流完成的。 Here are some lines how I begin creating the excel file:
以下是我开始创建excel文件的几行:
using (MemoryStream mem = new MemoryStream())
{
using (var document = SpreadsheetDocument.Create(mem, SpreadsheetDocumentType.Workbook))
{
var workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
var worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();
var sheets = workbookPart.Workbook.AppendChild(new Sheets());
var sheet = new Sheet
{
Id = workbookPart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "Report"
};
sheets.Append(new[] { sheet });
workbookPart.Workbook.Save();
var sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());
// Constructing header
var row = new Row();
// This needs to get adjusted for your needs
// it returns IEnumerable<Cell>
row.Append(GenerateHeaderCells(/*FillMe*/));
// Insert the header row to the Sheet Data
sheetData.AppendChild(row);
foreach (var entity in data)
{
row = new Row();
//This needs to get adjusted
// it returns IEnumerable<Cell>
row.Append(GenerateCells(/*FillMe*/));
sheetData.AppendChild(row);
}
worksheetPart.Worksheet.Save();
}
return mem.ToArray();
}
I had no MS-Office installed on my system and my requirement was to generate the file and send it to email. 我的系统上没有安装MS-Office,我的要求是生成文件并将其发送到电子邮件。 So ultimate goal was to send the excel to admin user.
因此,最终目标是将excel发送给管理员用户。 When i wrote the code to send it to email and checked email, excel showed the data but when I was returning it from the same code, It was blank sheet.
当我编写代码以将其发送到电子邮件并检查电子邮件时,excel会显示数据,但是当我从同一代码返回数据时,它是空白表。 Maybe I should have used interop dlls.
也许我应该使用互操作的dll。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.