• 导出excel表格(按模板导出)


    html代码:

    /**
      * 业务数据信息下载
      *
      * @param response
      * @param fundReconciliationQueryVo
      * @param request
    */
    @RequestMapping(value = "/downloadBusinessInfo")
    public ResponseEntity<byte[]> downloadBusinessInfo(HttpServletResponse response, FundReconciliationQueryVo fundReconciliationQueryVo, HttpServletRequest request) {
            ResponseEntity<byte[]> responseEntity = null;
            //获取前台额外传递过来的查询条件
            if (log.isDebugEnabled()) {
                log.debug("fundReconciliationQueryVo:{}", fundReconciliationQueryVo);
            }
            try {
                String fileName = "businessInfoModel.xlsx";
                ClassPathResource resource = new ClassPathResource(fileName);
                InputStream inputStream = resource.getInputStream();
                Workbook workbook = ReadExcelUtil.getWorkbook(inputStream, fileName);
    
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                List<BusinessDataDto> businessInfoList = fundReconciliationService.downloadBusinessInfo(fundReconciliationQueryVo);
                for (BusinessDataDto businessDataDto : businessInfoList) {
                    if ("1".equals(businessDataDto.getAccountStatus())) {
                        businessDataDto.setAccountStatus("已确认");
                    } else if ("2".equals(businessDataDto.getAccountStatus())) {
                        businessDataDto.setAccountStatus("需要处理");
                    } else if ("3".equals(businessDataDto.getAccountStatus())) {
                        businessDataDto.setAccountStatus("已收账");
                    } else {
                        businessDataDto.setAccountStatus("未匹配");
                    }
                }
                //生成EXCEL XLSX格式
                this.businessInfoExportData(workbook, businessInfoList, byteArrayOutputStream);
    
                String downFileName = java.net.URLEncoder.encode("业务数据信息.xlsx", "UTF-8");
                //设置响应头让浏览器正确显示下载
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
                headers.setContentDispositionFormData("attachment", downFileName);
                responseEntity = new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return responseEntity;
        }
    
        public static Workbook getWorkbook(InputStream is, String fileName) throws IOException {
            Workbook workbook = null;
            try {
                if (fileName.endsWith(EXTENSION_XLS)) {
                    workbook = new HSSFWorkbook(is);
                } else if (fileName.endsWith(EXTENSION_XLSX)) {
                    workbook = new XSSFWorkbook(is);
                }
    
            } catch (FileNotFoundException e) {
                throw e;
            } catch (IOException e) {
                throw e;
            } finally {
                is.close();
     }
    
     public void businessInfoExportData(Workbook workbook, List<BusinessDataDto> businessInfoList, OutputStream outputStream) {
            //EXCEL列
            List<List<Object>> rows = new ArrayList<>();
            //从给定数据获取指定列作为EXCEL列数据
            for (BusinessDataDto businessDataDto : businessInfoList) {
                List<Object> row = new ArrayList<>();
                //序号
                row.add(businessDataDto.getIndexNum());
                //发票抬头
                row.add(businessDataDto.getName());
                //报销单号
                row.add(businessDataDto.getReportNo());
                //单号
                row.add(businessDataDto.getBillsNo());
                //结算金额
                row.add(new BigDecimal(businessDataDto.getOrderAmount()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
                //支付时间
                if (Lang.isEmpty(businessDataDto.getAtsPayDate())) {
                    row.add(businessDataDto.getAtsPayDate());
                } else {
                    row.add(DateUtils.formatDate(businessDataDto.getAtsPayDate(), GlobalContants.DateFormat.YYYY_MM_DD_HH_MM_SS));
                }
                //状态
                row.add(businessDataDto.getAccountStatus());
                rows.add(row);
            }
            XSSFWorkbook xwb = excelService.businessAndFinancialInfoExcelForXLSX(workbook, rows);
            try {
                xwb.write(outputStream);
                outputStream.flush();
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    xwb.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    

    excelService

           /**
    	 * 业务数据信息/财务到账信息下载
    	 * @param rows 数据行
    	 * @return
    	 */
    	public XSSFWorkbook businessAndFinancialInfoExcelForXLSX(Workbook workbook, List<List<Object>> rows) {
    		XSSFWorkbook xwb = (XSSFWorkbook) workbook;
    		XSSFSheet sheet = (XSSFSheet) workbook.getSheetAt(0);
    		//设置字体
    		XSSFFont font = xwb.createFont();
    		font.setFontName("宋体");//设置字体名称
    		font.setFontHeightInPoints((short)12);//设置字号
    		//设置单元格格式
    		XSSFCellStyle style = xwb.createCellStyle();
    		style.setFont(font);
    		style.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中
    		style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); //垂直居中
    		style.setWrapText(true);//自动换行
    		style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
    		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
    		style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
    		style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
    		// 写入数据行
    		XSSFRow row;//行
    		XSSFCell cell;//单元格
    		int rowIdx = 1;
    		for(List<Object> dr : rows) {
    			row = sheet.createRow(rowIdx);
    			for(int di=0; di < dr.size(); di++) {
    				cell = row.createCell(di);
    				cell.setCellStyle(style);
    				String cellValue = "";
    				if(Lang.isEmpty(dr.get(di))){
    					cellValue = "";
    				}else{
    					cellValue = dr.get(di)+"";
    				}
    				cell.setCellValue(new XSSFRichTextString(cellValue));
    			}
    			rowIdx ++;
    		}
    		return xwb;
    	}
  • 相关阅读:
    4.2 面向对象分析(二) CRC方法标识概念类
    4.1 面向对象分析(二) 标识概念类和对象
    3.4 面向对象分析(一)面向对象设计(初步)
    3.3 面向对象分析(一)分析模型法
    3.2 面向对象分析(一)名词法
    3.1 面向对象分析与设计概览
    2.7 UML状态图
    2.6 通信图
    2.5 UML顺序图
    2.4 UML类图
  • 原文地址:https://www.cnblogs.com/jcjssl/p/9335877.html
Copyright © 2020-2023  润新知