vue+Java 实现前后端Excel导出
1. 按钮设置
使用avue的导出功能可以查看官网
https://www.avuejs.com/default/export.html
我这里使用的是自定义的按钮,并且自己实现了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","渠道流水号"