首页 > 其他分享 >.net webapi导出excel

.net webapi导出excel

时间:2023-07-23 15:12:49浏览次数:42  
标签:webapi xlsx elink buffer excel ms new net

public IActionResult downloadWeeklyTemplate()
        {


            string basePath = AppDomain.CurrentDomain.BaseDirectory;
            string path = basePath + "/excel.xlsx";

            var f = new FileInfo(path);
            if (!f.Exists)
            {

                return BadRequest("未找到文件");
            }

            var contentType = "application/octet-stream";

            byte[] buffer = new byte[f.Length];

            using (FileStream stream = f.OpenRead())
            {
                stream.Read(buffer, 0, buffer.Length);
            }

           

            return File(buffer, contentType, "excel.xlsx"); }

2.如果是后台查询数据并生成excel导出那么需要MemoryStream读取字节,代码如下

  XSSFWorkbook wookBook = //这边是使用NPOI生成的对象,自己填充数据;byte[] buffer;

            using (MemoryStream ms = new MemoryStream())
            {
                wookBook.Write(ms);
                //ms.Flush();
                //ms.Position=0;
                //ms.Flush();
                buffer = ms.ToArray();
                ms.Close();
            }

 

3. 前端请求使用axios,并且将responseType 设置成"bolb",否则会出现下载后文件已损坏的情况。

 axios.post(Apiurl, params, {
           
            responseType: 'blob'
        })
            .then(res => {
                    const blob = new Blob([res.data])
                    const fileName = 'excel.xlsx'

                    const elink = document.createElement('a')
                    elink.download = fileName
                    elink.style.display = 'none'
                    elink.href = URL.createObjectURL(blob)
                    elink.setAttribute('download', 'excel.xlsx')
                    document.body.appendChild(elink)
                    elink.click()
                    URL.revokeObjectURL(elink.href) // 释放URL 对象
                    document.body.removeChild(elink)

            })
            .catch(err => {
                reject(err.data)
            })

 

标签:webapi,xlsx,elink,buffer,excel,ms,new,net
From: https://www.cnblogs.com/hegn/p/17574958.html

相关文章

  • 捷米特PROFINET总线协议网关介绍
    关于PROFINETPROFINET由PROFIBUS国际组织(PROFIBUSInternational,PI)推出,是新一代基于工业以太网技术的自动化总线标准。PROFINET为自动化通信领域提供了一个完整的网络解决方案,囊括了诸如实时以太网、运动控制、分布式自动化、故障安全以及网络安全等当前自动化领域的热点话题,并......
  • Python报错 | AttributeError: 'NoneType' object has no attribute 'group'
    报错信息使用Python正则匹配的时候,报如下错误:AttributeError:'NoneType'objecthasnoattribute'group'错误原因报错翻译过来是:属性错误:“NoneType”对象没有属性“group”没有匹配到符合正则表达式的内容,但又调用了group方法。importrestr='hellopython!!!hel......
  • PROFINet转RS485协议Modbus网关方法
    1,产品概述你是否曾经遇到过不同网络协议之间的沟通问题?捷米特JM-RTU-PN为你解决这个难题!捷米特JM-RTU-PN是一款数据通讯模块,能够实现PROFINet网络与Modbus网络之间的数据传输。它可以将RS485网络连接到PROFINet网络,并支持不同的Modbus通讯波特率和设置。也就是说,它可以将Modbus......
  • excel - LOOKUP的使用
    使用LOOKUP来对进行某列的匹配,使用方法1.单关键字查找其中,E1单元格的公式如下=LOOKUP(1,0/(D2=$A$2:$A$6),$B$2:$B$6)2.多关键字查找如果遇到多关键字的查找情况,可以通过&来实现,例如其中,F1单元格的公式如下=LOOKUP(1,0/(E2=$A$2:$A$6&$B$2:$B$6),$C$2:$C$6)在遇到数......
  • Net6之Jwt认证+Bearer认证 2.0
    以前接触过,写过博客,第二次再写有了新的体会。第一次博客:https://www.cnblogs.com/zhang-3/p/16184067.html过程:生成token令牌(钥匙)添加bearer认证(验证钥匙是否正确)给接口或控制器添加验证(锁)给接口添加显示的小锁1.引入包:System.IdentityModel.Tokens.Jwt这次博客比......
  • ICCV 2023 | 南开大学提出LSKNet:遥感旋转目标检测新SOTA
    前言 最近关于遥感物体检测的研究主要集中在改进旋转包围框的表示方法上,但忽略了遥感场景中出现的独特的先验知识。这种先验知识是非常重要的,因为微小的遥感物体可能会在没有参考足够长距离背景的情况下被错误地检测出来,而不同类型的物体所要求的长距离背景可能会有所不同。本文......
  • AspnetCore接入Nacos配置中心
    一、什么是nacosNacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服......
  • Telnet qsnctfwp
    Windows安装Telnet在控制面板的程序和功能中选择打开或关闭Windows功能启用Telnet客户端并单击确认退出启动终端,输入命令telnet打开Telnet客户端在客户端中输入openchallenge.qsnctf.comxxx,其中xxx是端口号依次输入账号root和密码toor使用命令cd/进......
  • Excel 中的技巧函数
    Excel常用函数公式20例,第7条条件查询,其中第一列为要查询的列,如果不是怎么办?可以参考Excel函数之王,Vlookup到底怎么用?IF({1,0},B:B,A:A)......
  • 记录实现复制EXCEL数据到前端表单
     背景是用户需要把原本在Excel上填报的数据搬运到线上系统进行填报,在做了一个带输入框的表格之后用户提出希望能够实现将EXCEL上的数据复制黏贴到这个表格里的功能。 实现功能的整体思路是在input框上监听黏贴事件,获取到复制的数据。由于在Excel中\t表示换格,\n表示换行,所以......