使用closedxml从web api下载excel文件

双头松鼠

我无法通过 Web API 下载由 closedxml 创建的 excel 文件。如果我将文件保存在服务器上,它看起来不错,但是一旦我将它放入流中并将其返回到 web api,那么浏览器中只会收到一个损坏的文件。

正如我在几个帖子中所建议的那样,我使用 httpResponseMessage,但在浏览器中,标头中的文件名永远不会到达。

我们正在使用:

"Microsoft.AspNet.WebApi" 版本="5.2.3" targetFramework="net461

"ClosedXML" version="0.88.0" targetFramework="net461"

网页API代码:

 var wb = new XLWorkbook();
            var ws = wb.Worksheets.Add("Parcel List");


            MemoryStream fs = new MemoryStream();
            wb.SaveAs(fs);
            fs.Position = 0;


            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(fs.GetBuffer());
            result.Content.Headers.ContentLength = fs.Length;
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "List" + "_" + DateTime.Now.ToShortDateString() + ".xlsx"
            };
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            return result;

这里的javascript代码:

  context.$http.post(config.get_API_URL() + 'api_call',  excel_list,
        {responseType: 'application/octet-stream'})
  .then(
    success_function,
    error_function)
}

成功功能:

function(response) {

                  var headers = response.headers;
                 var blob = new Blob([response.body],
                                     {type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'},
                                   );

                 window.open(window.URL.createObjectURL(blob));

                }
双头松鼠

问题似乎是 web api 调用的响应类型必须是 {responseType: 'arraybuffer'} 而不是 {responseType: 'application/octet-stream'}

context.$http.post('api-url', excel_list, {responseType: 'arraybuffer'}) .then( success_function, error_function) }

无论如何感谢您的快速帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ClosedXML下载文件

来自分类Dev

调用WEB API下载excel文件

来自分类Dev

使用ClosedXML从Excel文件读取

来自分类Dev

在.NET Core Web API中下载Excel文件

来自分类Dev

使用Excel VBA从Web下载zip文件

来自分类Dev

使用ClosedXML附加到Excel文件

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用WEB API模拟文件下载

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用RSelenium下载Excel文件

来自分类Dev

Web API下载锁定文件

来自分类Dev

AngularJS + Web API-如何安全地下载excel文件而无需再次登录

来自分类Dev

AngularJS + Web API-如何安全地下载excel文件而无需再次登录

来自分类Dev

使用ClosedXML保存修改的excel(xlsx)文件时出错

来自分类Dev

Smartsheet-使用API将工作表下载为Excel文件

来自分类Dev

Smartsheet-使用API将工作表下载为Excel文件

来自分类Dev

如何使用 Angular4 和 Rails API 下载 Excel 文件?

来自分类Dev

使用Jquery Post使用Web API下载文件

来自分类Dev

使用Jquery Post使用Web API下载文件

来自分类Dev

使用Play Web API下载文件(异步)

来自分类Dev

使用EPPlus创建后下载Excel文件

来自分类Dev

使用XLConnect从XLConnect下载Excel文件

来自分类Dev

使用R从网址下载多个Excel文件

来自分类Dev

使用webapi和angularjs下载Excel文件

来自分类Dev

Web API从javascript下载xml文件

来自分类Dev

Web API中文件下载的内容协商

来自分类Dev

从Excel文件读取的ClosedXML

来自分类Dev

使用Amazon Android API下载文件

来自分类Dev

使用Amazon Android API下载文件