vue+Java 实现前后端Excel导出

本文介绍了如何使用vue.js和Java实现前后端配合导出Excel文件。在前端,通过avue的导出功能或者自定义按钮触发Excel导出;在后端,编写Excel工具类和业务代码来生成Excel文件。在数据传输过程中,确保后端返回的文件类型为blob,以防止乱码。同时,若数据类型不匹配,需进行类型转换,以保证正确下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue+Java 实现前后端Excel导出

1. 按钮设置

在这里插入图片描述使用avue的导出功能可以查看官网
https://www.avuejs.com/default/export.html
avue自带按钮设置
自定义按钮设置
我这里使用的是自定义的按钮,并且自己实现了Excel的导出

2、Java后端代码

(1)定义Excel工具类

这个工具类是根据ExcelWriter 这个类进行创建的

public class ExcelExportUtils {
   
    public static void exportExcelByResponse(ExcelWriter excelWriter, HttpServletResponse response, String fileName, HttpServletRequest request) throws IOException {
   
        String userAgent = request.getHeader("USER-AGENT");
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Trident") || StringUtils.contains(userAgent, "Edge")) {
   //IE 浏览器
            fileName = URLEncoder.encode(fileName, "UTF8");
        } else {
   //火狐,google等其他浏览器
            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
        }
        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
        //客户端不缓存
        response.setCharacterEncoding("UTF-8");
        response.addHeader("Pargam", "no-cache");
        response.addHeader("Cache-Control", "no-cache");
        Workbook workbook = excelWriter.getWorkbook();
        ServletOutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        //关闭缓存
        workbook.close();
        outputStream.close();
    }
}

(2)创建枚举类来指定Excel表格中头标题的别名

/**
 * Excel表格别名定义
 * @author fanxiaoxuan
 * @version 1.0
 * @since 2021/12/15 10:42
 */
public enum SplitExportEnum {
   

    PLAT_NO("platNo","平台编号"),
    BIZ_ORDER_NO("bizOrderNo","业务单号"),
    ORDER_NO("orderNo","支付单号"),
    BUSINESS_TYPE("businessType","业务类型"),
    BIZ_SPLIT_NO("bizSplitNo","业务分账单号"),
    SPLIT_NO("splitNo","支付分账单号"),
    TRANS_TIME("transTime","分账时间"),
    MEMBER_NO("memberNo","会员号"),
    MEMBER_NAME("memberName","会员名称"),
    SPLIT_TYPE("splitType","分账类型"),
    ORDER_AMT("orderAmt","订单金额"),
    SPLIT_AMT("splitAmt","分账金额"),
    CLEAR_TIME("clearTime","清算时间"),
    SETTLE_TIME("settleTime","结算时间"),
    CHANNEL_FLOW_NO("channelFlowNo","渠道流水号"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值