/**
* 導出支付寶批量支付文件excel
*
* @param name
* @param begintime
* @param endtime
* @param p
* @param l
* @param k
* @param request
* @param response
*/
@RequestMapping("exportApplyBatchExcel")
public void exportApplyBatchExcel(String name, String begintime, String endtime, Integer p, Integer l, String k,
HttpServletRequest request, HttpServletResponse response) {
// if (auth.getCurrentUserId(k) == null) {
// ResponseUtil.json(JsonUtil.toString(GenericResponses.TOKEN_LOSE),
// response);
// return;
// }
// 逐頁查詢數據,將所有數據導出到excel表中(注:此方法中不傳p,l參數,使用的是service層中,默認的第1頁開始,每頁顯示50條)
Integer pp = 1;
Long tt = 1l;
String[] headers = { "批次號", "付款日期", "付款人email", "賬戶名稱", "總金額(元)", "總筆數" };
OutputStream out = null;
while (true) {
pp++;
// 查詢數據庫
ListResponse<?> listResponse = this.finApi.selectApplyBatch(name, begintime, endtime, p, l, k);
// 獲取總頁數
Long total = listResponse.getTotal();
if (tt > 0) {
tt = total - pp;
} else {
break;
}
// 獲取查詢結果,數據列表
Object result = listResponse.getResult();
// 類型轉換
if (result != null) {
List<ApplyBatchMXVo> applyBatchMXVos = JsonUtil.readJsonList(JsonUtil.toString(result),
ApplyBatchMXVo.class);
// 導出
try {
// 設置導出excel文件
out = response.getOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(out);
String fileName = "批量支付文件" + ".zip";
response.setContentType("application/octet-stream ");
response.setHeader("Connection", "close"); // 表示不能用瀏覽器直接打開
response.setHeader("Accept-Ranges", "bytes");// 告訴客戶端允許斷點續傳多線程連接下載
response.setHeader("Content-Disposition",
"attachment;filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1"));
response.setCharacterEncoding("UTF-8");
// 遍歷填充數據
for (ApplyBatchMXVo vo : applyBatchMXVos) {
List<List<Object>> datas = new ArrayList<>();
List<Object> data = new ArrayList<>();
data.add(vo.getId());// 批次號
data.add(vo.getCreateTime());// 付款時間
data.add(vo.getPayAccount());// 付款人email
data.add(vo.getPayName());// 賬戶名稱
data.add(vo.getTotalCost());// 總金額(元)
data.add(vo.getTotalCount());// 總筆數
datas.add(data);
List<Object> data2 = new ArrayList<>();
// 插入第二行表頭
data2.add("商戶流水號");// 商戶流水號
data2.add("收款人email");// 收款人email
data2.add("收款人姓名");// 收款人姓名
data2.add("付款金額(元)");// 付款金額(元)
data2.add("付款理由");// 付款理由
datas.add(data2);
for (ApplyMoneyMXVo amvo : vo.getApplyMoneyMXVos()) {
List<Object> data3 = new ArrayList<>();
data3.add(amvo.getApplyNo());// 商戶流水號
data3.add(amvo.getUserAccount());// 收款人email
data3.add(amvo.getUserName());// 收款人姓名
data3.add(amvo.getMoney());// 付款金額(元)
data3.add(amvo.getPayCase());// 付款理由
datas.add(data3);
}
// 導出文件zip壓縮設置
Workbook book = GenerateXmlUtil.generateCreateXsl(headers, datas, "批量支付文件");
ZipEntry entry = new ZipEntry(vo.getId() + ".xls");
zipOutputStream.putNextEntry(entry);
book.write(zipOutputStream);
}
// 關閉輸出流
zipOutputStream.flush();
zipOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
ResponseUtil.text(TraceUtil.trace(e), response);
}
}
// 重新設置分頁參數
p = pp;
}
}
java導出多個excel表格,並壓縮成zip輸出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.