首页 > 其他分享 >根据复杂excel文档模板导出excel表格

根据复杂excel文档模板导出excel表格

时间:2023-06-13 10:55:54浏览次数:40  
标签:map excel fileName 文档 put response 模板

1,首先导入阿里的jar包

<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.2</version> </dependency>

 

2,将模板excel文件放在对应目录下,取文件时根据存放路径取

①模板内容

 

②模板存放位置

 

 

 

 

3,编写util类

public class TemplateExcelUtils{
        /**
         * 导出文件时为Writer生成OutputStream.
         * @param fileName 文件名
         * @param response response
         * @return ""
         */
        public static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
            try {
                fileName = URLEncoder.encode(fileName, "UTF-8");
                response.setContentType("application/vnd.ms-excel");
                response.setCharacterEncoding("utf8");
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
                response.setHeader("Pragma", "public");
                response.setHeader("Cache-Control", "no-store");
                response.addHeader("Cache-Control", "max-age=0");
                return response.getOutputStream();
            } catch (IOException e) {
                throw new Exception("导出excel表格失败!", e);
            }
        }
}

 

4,编写测试代码

@RestController
@RequestMapping("/user")
public class ExcelTest {

    @GetMapping("/downExcelTest")
    public void downExcel2(HttpServletResponse response) {
        InputStream is= null;
        Map<String, Object> map = new HashMap<>();
        map.put("nowDay", "2023-06-13");
        map.put("customerName", "测试客户名");
        map.put("customerNo", "测试客户编号");
        map.put("solutiomTime", "2023-06-09");
        map.put("amount", "2000");
        map.put("userName", "张三");
        map.put("taskNo", "202306130001");
        map.put("taskNo", "1001");
        map.put("processingTime", "2023-06-09");
        map.put("longAmount", "500");
        map.put("shortAmount", "300");
        map.put("accountNo", "CN20230613");
        // 取出模板
        try        {
            is = ResourceUtil.getStream("templates/ErrorAccInfo.xlsx");
            //定义最终导出的文件名称
            String fileName = "测试文档.xlsx";
            ExcelWriter excelWriter = EasyExcel.write(TemplateExcelUtils.getOutputStream(fileName, response)).withTemplate(is).excelType(ExcelTypeEnum.XLSX).build();
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            // 这个传进去的 map 就是非表格数据
            excelWriter.fill(map, writeSheet);
            excelWriter.finish();
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

 

 5,测试。启动项目后舒服对应地址

 

6,测试结果

 

标签:map,excel,fileName,文档,put,response,模板
From: https://www.cnblogs.com/802syy/p/17476744.html

相关文章

  • 自增、Doc文档
    自增自减a++下一条语句a才自增++a本条语句a就自增Doc文档javadoc命令是用来生成自己的API文档cmd命令:javadoc-encodingUTF-8-charsetUTF-8Doc.java  ......
  • VM虚拟机模板,克隆或导入后网络不通问题解决办法
    出于工作需要可能需要对VM虚拟机制作模板,并导出为.vof文件,并根据vof模板文件导入为新的虚拟机,但是当导入后会发现网络不通,现将网络问题解决办法进行记录:本次实验OS为Centos7,网卡默认配置文件名为ifcfg-ens331.保留默认网卡网卡目录:/etc/sysconfig/network-scripts/保留默认......
  • word文档四个角的图标叫什么?
    叫裁剪标记,关闭和打开就能控制显示。1、打开开始菜单,打开word软件。2、在界面左上角点击【文件】按钮。3、在左边菜单栏点击【选项】。4、在打开的选项界面点击【高级】。5、慢慢往下拉,找到显示文档内容,点击【显示裁剪标记】。6、关闭显示后,四个角也就是裁剪标记没有......
  • python: read excel
    pipinstallxlrdpipinstallxlwtpipinstallxlutilspipinstallxlwingspipinstallXlsxWriterpipinstallopenpyxlpipinstallpandaspipinstallpandasql importDrawSquareimportDecoratorsimportxlrdimportxlwtimportxlwingsasxwimportxlsxwriterim......
  • 尚医通-day04【EasyExcel详细步骤】(内附源码)
    页面预览数据导出数据导入第01章-AlibabaEasyExcel1、EasyExcel介绍1.1、EasyExcel的作用数据导入:减轻录入工作量数据导出:统计信息归档数据传输:异构系统之间数据传输1.2、EasyExcel的特点快速:快速的读取excel中的数据。简洁:映射excel和实体类,让代码变的更加简......
  • Qt打包程序移动到新环境时提示QAxBase::setControl: requested control Excel.Applica
    在新环境中运行程序时发现程序异常结束,查看日志内如如下,异常原因应该是我是程序中对Excel表格操作产生的。Warning:File:()Line:(0)QAxBase::setControl:requestedcontrolExcel.Applicationcouldnotbeinstantiated(2023-06-1217:40:58)Warning:File:()Line:(0)QAx......
  • 压位高精度模板(加,减,乘)
    structbignum{ #definebase10000 inta[20000]; bignum(){memset(a,0,sizeof(a));}inlinevoidinit(){memset(a,0,sizeof(a));a[0]=1;a[1]=1;} inlinevoidread(){staticchars[1000];scanf("%s",s);intn=strlen(s),len=1; for......
  • DotNet 自定义模板
    目录DotNet自定义模板创建目录结构template.json生成本地模板使用本地模板生成项目发布到Nuget参考资料DotNet自定义模板创建目录结构下面以artizan-abp-microservice项目为例,解决方案结构:基于该项目创建dotnet模板,首先,创建文件夹templates,所有的项目模板将保存......
  • SpringBoot多模块项目搭建以及搭建基础模板
    多模块项目搭建目录多模块项目搭建1.父项目pom文件编辑2.创建子模块1.父项目pom文件编辑<!--1.父工程添加pom格式--><packaging>pom</packaging><!--定义子模块--><modules><module>walker-service</module><module>walker-utils&......
  • BRP EDI 项目 Excel方案开源介绍
    近期为了帮助广大用户更好地使用EDI系统,我们根据以往的项目实施经验,将成熟的EDI项目进行开源。用户安装好知行之桥EDI系统之后,只需要下载我们整理好的示例代码,并放置在知行之桥指定的工作区中,即可开始使用。今天的文章主要为大家介绍BRPEDI项目,了解如何获取开源的项目代码以及......