@RequestMapping("reportToExcel") @ResponseBody public ResultJsonInfo reportExcel(WxSchoolWisdomPayInfoQueryParam param, HttpServletRequest request, HttpServletResponse response) throws IOException { //String accountName= request.getParameter("accountName"); String filePath="C:\\Users\\Administrator\\Desktop\\test.xlsx"; //导出模板内容 String path="/excelTemplates/reportXls/paymentDetail.xls"; InputStream inputStream= getClass().getResourceAsStream(path); //2003版excel表格要用HSSFWorkbook工作簿创建 HSSFWorkbook wb = new HSSFWorkbook(inputStream); //获取第一个Sheet Sheet sheet = wb.getSheetAt(0); int num= sheet.getRow(0).getLastCellNum(); //排序 OrderBean orderBean = new OrderBean(); orderBean.setOrder(OrderBean.DESC); orderBean.setOrderBy("payEndDate"); param.setOrderBean(orderBean); XSSFWorkbook workbook1 = new XSSFWorkbook(new FileInputStream(new File(filePath))); SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(workbook1, 100); Sheet first = sxssfWorkbook.getSheetAt(0); //总记录 List datas = new ArrayList (); String ids = param.getWxSchoolWisdomPayInfo().getIds(); if (ids == null) { datas = wxSchoolWisdomPayInfoService.findPage(param).getDataList(); } else { String id[] = ids.split(","); for (int i = 0; i < id.length; i++) { datas.add(wxSchoolWisdomPayInfoService.findById(id[i])); } } if (datas.size() > 10000) { long t1=System.currentTimeMillis(); List dtlDatas = new ArrayList (); int i = 1; String batchid = ""; for(int k=0;k list = new ArrayList (); String[] str = batchid.split(","); for(int j = 0;j payInfoList = wxSchoolWisdomPayInfoDetailService.findPage(q).getDataList(); for (WxSchoolWisdomPayInfoDetailVO dtl : payInfoList) { dtl.setId(i); if (dtl.getPayEndDate() != null) { String payDate = DateTools.getFormattingDateTime(dtl.getPayEndDate()); dtl.setPayDate(payDate); } String state = dtl.getPayState(); if ("1".equals(state)) { dtl.setPayState("待支付"); } else if ("0".equals(state)) { dtl.setPayState("支付成功"); } DecimalFormat decimalFormat = new DecimalFormat("###0.00"); String amt = decimalFormat.format(dtl.getPayAmt()); dtl.setAmt(amt); dtlDatas.add(dtl); i++; } try { for (int f = 0; f < dtlDatas.size(); f++) { Row row = first.createRow(f); for (int j =0; j