【问题标题】:web api 2 - excel spreadsheet (the file is corrupt and cannot be opened)web api 2 - excel 电子表格(文件已损坏,无法打开)
【发布时间】:2019-02-07 14:32:00
【问题描述】:

我正在尝试使用 web api 下载一个简单的 xlsx 文件,但该文件总是损坏,我还没有弄清楚为什么。我正在使用 C# ClosedXML.Excel 并遵循可以在此处找到的基本示例:

ClosedXml examples

[HttpGet]
[Route("campaigns/{id}/contact-points/excel")]
[SwaggerResponse(491, "TokenInvalid")]
[SwaggerResponse(HttpStatusCode.NotFound)]
[SwaggerResponse(HttpStatusCode.Forbidden)]
[ResponseType(typeof(HttpResponseMessage))]
public async Task<IHttpActionResult> GetCampaignContactPointsExcel(int id, int frequency, string txtFrequency)
{
    var wb = new XLWorkbook();
    var ws1 = wb.Worksheets.Add("Sheet1");
    ws1.Cell("A1").SetValue(1).AddToNamed("value1");

    var ws2 = wb.Worksheets.Add("Sheet2");

    ws2.Cell("A1").SetFormulaA1("=value1").AddToNamed("value2");

    var responseMessage = new HttpResponseMessage(HttpStatusCode.OK);
    using (var memoryStream = new MemoryStream())
    {
            wb.SaveAs(memoryStream);
            responseMessage.Content = new ByteArrayContent(memoryStream.ToArray());
            responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            responseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = "ContactPoints.xlsx"
                };
                memoryStream.Close();
            }
            return ResponseMessage(responseMessage);
    }

我也在使用 swagger,当我点击链接时,它会下载文件并将其作为 xlsx 文件打开,但它总是说它已损坏。

【问题讨论】:

  • 您是否尝试过下载一个空的 xls 电子表格?也许您对 SetFormula 和 AddToNamed 所做的修改是错误的。

标签: c# excel asp.net-web-api2 memorystream


【解决方案1】:

后端代码没有错。在前端你需要设置 responseType='blob'

【讨论】:

    【解决方案2】:

    似乎这是一个与 swagger ui 2 相关的问题。请参考 [https://github.com/swagger-api/swagger-ui/issues/1605][1]。

    你可以试试 curl 或 Postman 看看是否能正确下载文件。

    【讨论】:

      【解决方案3】:

      同时调用服务集响应类型为'blob'

      return this.http.get(this.url +'PA/Downloadexcel/'+revisionId,{ responseType :'blob'});

      【讨论】:

        猜你喜欢
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-16
        • 1970-01-01
        • 2018-06-21
        相关资源
        最近更新 更多