使用Epplus导出XLSX文件会生成错误

时间:2018-01-24 20:04:36

标签: excel asp.net-web-api epplus

问题

我正在尝试使用LoadFromCollection方法将List发送到Excel文件。 生成XLSX文件后,它无法打开,但如果我将扩展名更改为XLS,则会显示如下。

ExcelFileError

代码

[HttpGet]
[Route("GetExcel")]
public async Task<HttpResponse> GetExcel()
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);

var stream =  new MemoryStream();
using (var excelPackage = new ExcelPackage())
{
    ExcelWorksheet ws = excelPackage.Workbook.Worksheets.Add("SoftwareVersao");
    var result = await _versaoAppService.Selecionar();
    ws.Cells["A1"].LoadFromCollection(result);
    ws.Cells.AutoFitColumns();
    excelPackage.SaveAs(stream);
}

HttpContext.Current.Response.BinaryWrite(stream.ToArray());
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + "SoftwareVersao.xlsx");
HttpContext.Current.Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();

return HttpContext.Current.Response;
}

如果我更改下面的行生成上面的图像,则此代码会生成损坏的XLSX文件。

 HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
 HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + "SoftwareVersao.xls");

尝试

我做了几次尝试。

  • 我使用了HttpResponseMessage而不是HttpResponse
  • 我在创建文件时使用了空白模板
  • 我更改了enconding
  • 我使用了几个代码段

我做错了什么?有没有我忘了实施的东西?

更新

我发现了这个问题,现在可以生成XLSX文件,但我遇到的问题是作者问题,Excel必须修复文件。

WebApi using EF EPPlus returning gibberish in exce

0 个答案:

没有答案