Java 讓excel匯出大量資料進行分表打成壓縮包進行下載
阿新 • • 發佈:2019-02-16
這段時間有涉及到 關於從前臺自己導資料到伺服器,然後再把資料匯入資料庫的操作,當時用了兩天多時間才完成這個事情。最近有接到優化資料匯出這個功能的一些任務,雖然做得還不是很完善,但也有自己的一些思想在裡面。正好這是我第一次發技術部落格,也就用這個來作為第一個案例好了。
public String consumeReport() throws IOException {
int excelnum=0;List<File> srcfile=new ArrayList<File>();
String templateName = "template.xlsx";// Excel模版
URL url = this.getClass().getResource("/");// CarParkAction.class.getResource("/");
String docsPath = url.getPath();
String templatePath = docsPath + templateName;
OrderService orderService = ((OrderService) ContextHolder.getBean("orderServiceImpl"));
List<OrderInfo> list = orderService.findOrderInfoList(orderInfo);
if (list != null) {
System.out.println("*******************有記錄,開始導資料");
while(list.size()>excelnum*100000){
ExcelTemplate excel = ExcelTemplate.getInstance().readTemplatePath(
templatePath);
String fileName = orderInfo.getParkId() +"_"+excelnum+ "_ConsumeInfo.xlsx";// 匯出Excel檔名
String filePath = docsPath + fileName;
excel.creatNewRow();
excel.createNewCol("停車場ID");
excel.createNewCol("車牌號碼");
excel.createNewCol("消費型別");
//excel.createNewCol("支付型別");
excel.createNewCol("消費金額(元)");
excel.createNewCol("開始時間");
excel.createNewCol("結束時間");
excel.createNewCol("消費時間");
for (int i = excelnum*100000; i <=excelnum*100000 + 99999; i++) {
if(list.size()<(i+1)){
break;
}
OrderInfo orderInfoResult=list.get(i);
if(orderInfoResult==null){
break;
}
excel.creatNewRow();
excel.createNewCol(orderInfoResult.getParkId() + "");
excel.createNewCol(orderInfoResult.getCarCode());
if(orderInfoResult.getCostType()!=null){
int costType = orderInfoResult.getCostType();
switch (costType) {
case 1:
excel.createNewCol("包月");
break;
case 2:
excel.createNewCol("雲繳費");
break;
case 3:
excel.createNewCol("現金");
break;
case 4:
excel.createNewCol("充值");
break;
default:
excel.createNewCol("其它型別");
break;
}
}else{
excel.createNewCol("其它型別");
}
excel.createNewCol(DateUtils.ftoy(orderInfoResult.getOrderFee(), 100));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getStartTime()));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getEndTime()));
excel.createNewCol(DateUtils.dateToString(orderInfoResult
.getCreateTime()));
}
excel.writeToFile(filePath);
srcfile.add(new File(filePath));
excelnum++;
}
String fileName = orderInfo.getParkId() +".zip";// 匯出Excel檔名
String filePath = docsPath + fileName;
// File zipfile = new File(filePath);
//壓縮檔案
craeteZipPath(srcfile, filePath,docsPath);
//下載檔案
download(filePath, response);
// 如果檔案路徑所對應的檔案存在,並且是一個檔案,則直接刪除
File filedelect = new File(filePath);
filedelect.delete();
}else {
System.out.println("*******************沒有記錄");
ResponseUtil.responseJson(response, "300");
}
return null;
}