成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

ajax實現excel報表導出

瀏覽:384日期:2022-06-11 16:50:10

利用ajax實現excel報表導出【解決亂碼問題】,供大家參考,具體內容如下

背景

項目中遇到一個場景,要導出一個excel報表。由于需要token驗證,所以不能用a標簽;由于頁面復雜,所以不能使用表單提交。初步考慮前端使用ajax,后端返回流,定義指定的header。

第一版

主要代碼

前端

使用jquery的ajax

var queryParams = {"test":"xxx"};
var url = "xxx";
$.ajax({
 type : "POST", //提交方式
 url : url,//路徑
 contentType: "application/json",
 data: JSON.stringify(queryParams),
 beforeSend: function (request) {
  request.setRequestHeader("Authorization", "xxx");
 },
 success : function(result) {
  const blob = new Blob([result], {type:"application/vnd.ms-excel"});
  if(blob.size < 1) {
   alert("導出失敗,導出的內容為空!");
   return
  }
  if(window.navigator.msSaveOrOpenBlob) {
   navigator.msSaveOrOpenBlob(blob, "test.xls")
  } else {
   const aLink = document.createElement("a");
   aLink.style.display = "none";
   aLink.href = window.URL.createObjectURL(blob);
   aLink.download = "test.xls";
   document.body.appendChild(aLink);
   aLink.click();
   document.body.removeChild(aLink);
  }
 }
});

后端

使用easypoi(如何使用easypoi請自行百度)

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;

@PostMapping(value = "/download")
public void downloadList(@RequestBody Objct obj, HttpServletResponse response) {

 ......

 List<Custom> excelList = new ArrayList<>();
 
   // excel總體設置
   ExportParams exportParams = new ExportParams();
   // 指定sheet名字
   exportParams.setSheetName("test");
   Workbook workbook = ExcelExportUtil.exportExcel(exportParams, Custom.class, excelList);
 
   response.setContentType("application/vnd.ms-excel");
   response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("test", "utf-8") + ".xls");
   OutputStream outputStream = response.getOutputStream();
   workbook.write(outputStream);
   outputStream.flush();
   outputStream.close();
   
 ......
 
}

測試結果

excel能正常導出,但下載下來的excel全是亂碼。經過各種找答案,整理了一下可能是以下原因導致:

1、后端未設置字符集,或者在spring框架的過濾器中統一設置了字符集;
2、前端頁面未設置字符集編碼;
3、需要在ajax中添加 request.responseType = “arraybuffer”;

經過不斷測試,我的應該是第三點導致。但在jquery ajax 中添加后仍然不起作用,亂碼問題始終無法解決。

第二版

主要代碼

前端,使用原生的ajax。后端未變動。

var xhr = new XMLHttpRequest();
xhr.responseType = "arraybuffer"; 
xhr.open("POST", url, true);
xhr.onload = function () {
 const blob = new Blob([this.response], {type:"application/vnd.ms-excel"});
 if(blob.size < 1) {
  alert("導出失敗,導出的內容為空!");
  return;
 }
 if(window.navigator.msSaveOrOpenBlob) {
  navigator.msSaveOrOpenBlob(blob, "test.xls")
 } else {
  const aLink = document.createElement("a");
  aLink.style.display = "none";
  aLink.href = window.URL.createObjectURL(blob);
  aLink.download = "testxls";
  document.body.appendChild(aLink);
  aLink.click();
  document.body.removeChild(aLink);
  return;
 }
}
xhr.setRequestHeader("Authorization", "xxx");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(queryParams));

測試結果

下載的excel不再亂碼,原生ajax中使用 “arraybuffer” 使用是生效的。

總結

“arraybuffer” 這個參數導致的excel導出亂碼,在原生的ajax中設置是有效的,在jquery的ajax中暫時還沒找到生效的方式。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

標簽: Ajax
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
成人丝袜高跟foot| 99久久精品免费| 国产专区一区| 首页国产丝袜综合| 欧美电影免费观看完整版| 国产一区白浆| eeuss鲁片一区二区三区在线看| 亚洲123区在线观看| 26uuu另类欧美| 色偷偷久久一区二区三区| 国产精品 日产精品 欧美精品| 亚洲婷婷在线视频| 日韩免费视频一区| 欧美专区日韩专区| 91久久夜色精品国产九色| 成人国产精品免费| 日本美女视频一区二区| 亚洲天天做日日做天天谢日日欢| 欧美成人国产一区二区| 欧美午夜电影一区| 国产日韩欧美三级| 亚洲丰满在线| 国语自产精品视频在线看抢先版结局| 国产成+人+日韩+欧美+亚洲| 青青草原综合久久大伊人精品优势| 欧美极品aⅴ影院| 欧美成人艳星乳罩| 91精品国产日韩91久久久久久| 久久精品1区| 亚洲欧美日韩另类精品一区二区三区 | 一区二区精品| 激情欧美日韩| 午夜精品区一区二区三| 91麻豆国产福利在线观看| 高清免费成人av| 成人av高清在线| av亚洲精华国产精华精| 99精品热视频| 99精品欧美一区二区三区小说 | 先锋a资源在线看亚洲| 伊人成人网在线看| 欧美不卡高清| 欧美激情1区2区3区| 欧美激情无毛| 亚洲啪啪91| 亚洲激情一区| 欧美少妇一区| 99精品国产99久久久久久福利| 国内成人在线| 99亚洲伊人久久精品影院红桃| 亚洲成人在线视频网站| 国产亚洲永久域名| 91久久人澡人人添人人爽欧美| 色屁屁一区二区| 欧美群妇大交群中文字幕| 91精品国产入口| 国产校园另类小说区| 日韩一区欧美一区| 亚洲第一久久影院| 黑人巨大精品欧美黑白配亚洲| 国产精品正在播放| www.欧美.com| 狠狠色综合一区二区| 亚洲一区二区成人| 欧美高清性hdvideosex| 欧美精品一区二| 亚洲精品视频在线观看网站| 日韩在线观看一区二区| 国产老女人精品毛片久久| 99综合影院在线| 亚洲美洲欧洲综合国产一区| 久久久天天操| 精品欧美久久久| 国产精品久久久久影院| 日本欧美一区二区三区| 99久久er热在这里只有精品66| 欧美性事免费在线观看| 老牛嫩草一区二区三区日本| 日韩一二三四区| 亚洲欧洲日韩在线| 日本女优在线视频一区二区| 国产 欧美在线| 亚洲色图自拍| 日韩欧美一区二区视频| 亚洲一区二区av在线| 成人精品视频一区二区三区| 国产一区二区高清视频| 日韩女优毛片在线| 亚洲精品第1页| av色综合久久天堂av综合| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美91精品| 国产精品区二区三区日本| 日韩亚洲欧美一区| 婷婷六月综合网| 亚洲私人影院| 日韩欧美中文一区| 婷婷中文字幕综合| 欧美1区免费| 欧美性欧美巨大黑白大战| 18成人在线观看| 国产精品99精品久久免费| 99亚洲伊人久久精品影院红桃| 日韩欧美国产一二三区| 五月开心婷婷久久| 欧美婷婷在线| 日韩精品一区在线| 国内久久精品视频| 美女国产一区| 亚洲精品中文字幕在线观看| 成人免费高清视频| 欧美三级中文字幕在线观看| 一区二区高清在线| 午夜久久99| 欧美一区二区三区免费| 日韩精品国产精品| 亚洲制服av| 亚洲午夜免费福利视频| 99国产精品久久久久久久成人热| 久久久久久99精品| 成人性视频网站| 在线观看不卡一区| 亚洲成人午夜影院| 日韩亚洲一区在线播放| 久久精品人人做人人爽人人| 国产精品自拍毛片| 欧美日韩成人激情| 国产传媒一区在线| 欧美一区二区三区公司| 国产一区二区日韩精品| 91精品国产综合久久福利 | 日本韩国一区二区| 亚洲高清久久久| 香蕉国产精品偷在线观看不卡| 亚洲少妇中出一区| 国产日韩欧美三级| 亚洲一区二区3| 噜噜爱69成人精品| 五月综合激情网| 欧美优质美女网站| 久久精品国产99| 欧美一区二区播放| 成av人片一区二区| 中文字幕av资源一区| 国内久久视频| 国产精品久久久久影院亚瑟 | 国产精品黄色在线观看| 欧美日一区二区三区在线观看国产免| 国产清纯白嫩初高生在线观看91 | 精品免费日韩av| 91啪在线观看| 中文字幕亚洲不卡| 日韩午夜电影| 蜜臀av一区二区在线免费观看| 欧美性生活大片视频| 国产精品综合一区二区三区| 91精品国产综合久久久蜜臀图片| 懂色av噜噜一区二区三区av| 欧美精品一区男女天堂| 亚洲大黄网站| 奇米777欧美一区二区| 精品少妇一区二区三区免费观看| 欧美精品一区二区视频| 亚洲欧美福利一区二区| 一区二区三区资源| 欧美午夜精品久久久久久孕妇| 精品一区二区免费视频| 欧美大白屁股肥臀xxxxxx| 欧美日本精品| 午夜国产不卡在线观看视频| 在线综合亚洲欧美在线视频| 99精品偷自拍| 亚洲国产一区二区三区青草影视 | 亚洲成人av免费| 9191国产精品| 韩国欧美一区| 久草中文综合在线| 国产精品九色蝌蚪自拍| 色999日韩国产欧美一区二区| 国产毛片精品一区| 17c精品麻豆一区二区免费| 91国产丝袜在线播放| 成人免费福利片| 午夜伊人狠狠久久| 国产亚洲制服色| 欧美伊人久久久久久久久影院| 欧美 日韩 国产在线| 毛片基地黄久久久久久天堂| 久久日韩精品一区二区五区| 亚洲精品日韩精品| 国产高清亚洲一区| 亚洲电影一区二区三区| 久久蜜臀精品av| 在线观看国产91| 国自产拍偷拍福利精品免费一 | 久久久久久精| 亚洲午夜激情在线| 不卡在线观看av| 国产一区二区三区综合| 香蕉影视欧美成人|