文件 导出

无模板、表头单行数据

controller:

	@GetMapping("/xxx/download")
    @Log("xxx")
    @ApiOperation("xxx")
    @PreAuthorize("@el.check('xxx','xxx:xxx')")
    public void downloadxxxx(HttpServletResponse response, xxxQueryCriteria criteria) throws IOException {
		xxxService.downloadxxx(xxxService.queryxxx(criteria), response);
    }

xxxQueryCriteria

查询条件

@Data
public class xxxQueryCriteria {
    @Query(type = Query.Type.IN)
    private List<Long> list;

    @Query(type = Query.Type.BETWEEN)
    private List<String> createTime;

    @Query(type = Query.Type.INNER_LIKE)
    private String userName;
}

`

xxxService

public interface SybRptMchttermtransService extends BaseService<SybRptMchttermtrans> {
	List<实体类> queryxxx(xxxQueryCriteria criteria);
	void downloadxxx(List<实体类> convert, HttpServletResponse response)throws IOException;

}

xxxImpl

@Override
    public List<实体类> queryxxx(xxxQueryCriteria criteria){
        return xxxMapper.queryList(criteria);
    }

@Override
    public void downloadxxx(List<实体类> all, HttpServletResponse response) throws IOException {
        List<Map<String,Object>> list = new ArrayList<>();
        for (实体类 info :all){
            Map<String,Object> map = new LinkedHashMap<>();
            map.put("表头1",info.getxxx());
            map.put("表头2",info.getxxx());
            map.put("表头3",info.getxxx());
            map.put("表头4",info.getxxx());
            map.put("表头5",info.getxxx());
            map.put("表头6",info.getxxx());
            list.add(map);
        }

        FileUtil.downloadExcel(list, response);
    }



@Override
    public void downloadxxx(List<实体类> all, HttpServletResponse response) throws IOException {
    //模板文件存放路径 一般放到配置文件中
    	String templateFileNamePath = "xxxx";
        List<Map<String,Object>> list = new ArrayList<>();
        for (实体类 info :all){
            Map<String,Object> map = new LinkedHashMap<>();
            map.put("aaa",info.getxxx());
            map.put("bbb",info.getxxx());
            map.put("ccc",info.getxxx());
            list.add(map);
        }

       FileUtil.downloadTemplateExcel(templateFileNamePath, list,response);
    }

FileUtil

	/**
     * 导出excel
     */
    public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
        String tempPath =System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx";
        File file = new File(tempPath);
        BigExcelWriter writer= ExcelUtil.getBigWriter(file);
        // 一次性写出内容,使用默认样式,强制输出标题
        writer.write(list, true);
        //response为HttpServletResponse对象
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
        response.setHeader("Content-Disposition","attachment;filename=file.xlsx");
        ServletOutputStream out=response.getOutputStream();
        // 终止后删除临时文件
        file.deleteOnExit();
        writer.flush(out, true);
        //此处记得关闭输出Servlet流
        IoUtil.close(out);
    }

按模板导出

适用 于自定义导出文件的表头 或表头需要合并单元格等
前半部分一样,这里主要看工具类
eg:
在这里插入图片描述

FileUtil

	/**
     * 按模板导出excel
     */
     //templateFileName 为模板文件存储路径
    public static void downloadTemplateExcel(String templateFileName,List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
        //将模板数据放入到临时excel中
        String tempPath =System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx";
        com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(tempPath).withTemplate(templateFileName).build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
        excelWriter.fill(list, fillConfig, writeSheet);
        excelWriter.finish();
       //写入到浏览器中
        File file = new File(tempPath);
        BigExcelWriter writer= ExcelUtil.getBigWriter(file);
        //response为HttpServletResponse对象
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
        response.setHeader("Content-Disposition","attachment;filename=file.xlsx");
        ServletOutputStream out=response.getOutputStream();
        // 终止后删除临时文件
        file.deleteOnExit();
        writer.flush(out, true);
        //此处记得关闭输出Servlet流
        IoUtil.close(out);
    }

pom.xml:

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

vue接收后端数据

前端接收导出文件并命名:xxx数据.xlsx

doExport() {
      download(crud.url + '/download', crud.getQueryParams()).then(result => {
        downloadFile(result, crud.title + '数据', 'xlsx')
       
      }).catch(() => {
        
      })
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值