| | |
| | | import com.ruoyi.common.utils.file.FileTypeUtils; |
| | | import com.ruoyi.common.utils.file.ImageUtils; |
| | | import com.ruoyi.common.utils.reflect.ReflectUtils; |
| | | import org.apache.poi.hssf.usermodel.HSSFClientAnchor; |
| | | import org.apache.poi.hssf.usermodel.HSSFDataValidation; |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.ss.util.CellRangeAddress; |
| | | import org.apache.poi.ss.util.CellRangeAddressList; |
| | | import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
| | | import org.apache.poi.xssf.usermodel.XSSFClientAnchor; |
| | | import org.apache.poi.xssf.usermodel.XSSFDataValidation; |
| | | import org.apache.poi.xssf.usermodel.XSSFRichTextString; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | |
| | | * @throws IOException |
| | | */ |
| | | public void exportExcel(HttpServletResponse response, List<T> list, String sheetName) throws IOException { |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | // 设置文件名 |
| | | String fileName = UUID.randomUUID() + "_" + ".xlsx"; |
| | | response.setHeader("Content-Disposition", "attachment; filename=" + fileName); |
| | | this.init(list, sheetName, Excel.Type.EXPORT); |
| | | exportExcel(response.getOutputStream()); |
| | | } |
| | |
| | | * @return 结果 |
| | | * @throws IOException |
| | | */ |
| | | /** |
| | | * 对list数据源将其里面的数据导入到excel表单 |
| | | * |
| | | * @param response 返回数据 |
| | | * @param list 导出数据集合 |
| | | * @return 结果 |
| | | * @throws IOException |
| | | */ |
| | | public void exportExcelManySheet(HttpServletResponse response, List<ExcelExp> list, boolean includeQrCode, byte[] bt, |
| | | List<String> sigArr, List<String> arrAn, String inquiryNumber, String caseTitle) throws IOException { |
| | | // response.setContentType("application/vnd.ms-excel"); |
| | | // response.setCharacterEncoding("utf-8"); |
| | | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | // 设置文件名 |
| | | String fileName = UUID.randomUUID() + "_" + ".xlsx"; |
| | | response.setHeader("Content-Disposition", "attachment; filename=" + fileName); |
| | | |
| | | try { |
| | | createWorkbook(); |
| | |
| | | // 合并第一行的前5个单元格 |
| | | sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8)); |
| | | |
| | | // 必须先设置为true |
| | | // 页面布局设置 |
| | | sheet.setAutobreaks(true); |
| | | sheet.setFitToPage(true); |
| | | |
| | | // 获取打印设置 |
| | | PrintSetup printSetup = sheet.getPrintSetup(); |
| | | |
| | | // 设置为1页宽度 |
| | | printSetup.setFitWidth((short) 1); // 宽度调整为1页 |
| | | printSetup.setFitHeight((short) 0); // 高度不限制 |
| | | |
| | | // 其他打印设置 |
| | | printSetup.setPaperSize(PrintSetup.A4_PAPERSIZE); // A4纸 |
| | | printSetup.setLandscape(false); // 纵向打印 |
| | | |
| | | |
| | | // 创建行并设置高度 |
| | | row = sheet.createRow(firow); |
| | | row.setHeight((short)(40 * 40)); |
| | | //生成二维码 |
| | | if(includeQrCode) |
| | | { |
| | | Cell cell = row.createCell(6); |
| | | row.setHeight((short)(55.8 * 20)); |
| | | |
| | | Cell cell = row.createCell(6); |
| | | // 设置图片大小和位置 |
| | | ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) (cell.getColumnIndex()+1), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() +2), |
| | | cell.getRow().getRowNum() + 1); |
| | |
| | | // anchor.setDy1(0); |
| | | // anchor.setDx2(255); // 宽度 |
| | | // anchor.setDy2(255); // 高度 |
| | | anchor.setRow1(1); |
| | | anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE); |
| | | // 计算居中位置 |
| | | int col1 = 4; // 中间列 |
| | | int col2 = col1 + 3; |
| | | anchor.setCol1(col1); |
| | | anchor.setCol2(col2); |
| | | anchor.setRow1(0); |
| | | anchor.setRow2(1); |
| | | byte[] data = bt; |
| | | anchor.setDx1(2400000); |
| | | anchor.setDy1(-10); |
| | | |
| | | anchor.setDy2(-800000); |
| | | |
| | | // 获取图片原始尺寸 |
| | | BufferedImage image = ImageIO.read(new ByteArrayInputStream(data)); |
| | | double widthInEMU = image.getWidth() * 9525 * 0.2; |
| | | double heightInEMU = image.getHeight() * 9525; |
| | | |
| | | // 设置图片原始尺寸 |
| | | anchor.setDx2(-100000); // 原始宽度 |
| | | // anchor.setDx2(-100000); // 原始宽度 |
| | | // anchor.setDy2((int)heightInEMU); // 原始高度 |
| | | //anchor.setCol1(5); // 从第6列开始显示 |
| | | //anchor.setCol2(10); // 到第11列结束 |
| | |
| | | firow = firow + 1; |
| | | row = sheet.createRow(firow); |
| | | } |
| | | // sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7)); |
| | | else |
| | | row.setHeight((short)(33 * 20)); |
| | | |
| | | // sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7)); |
| | | if(firow==1) |
| | | { |
| | | sheet.addMergedRegion(new CellRangeAddress(firow, firow, 0, 8)); |
| | | // 创建行并设置高度 |
| | | row.setHeight((short)(20 * 20)); |
| | | row.setHeight((short)(33 * 20)); |
| | | } |
| | | Cell titleCell = row.createCell(0); |
| | | titleCell.setCellValue("文件材料移交目录清单(卷内级)"); |
| | |
| | | CellStyle style = wb.createCellStyle(); |
| | | Font font = wb.createFont(); |
| | | font.setBold(true); |
| | | font.setFontHeightInPoints((short) 18); |
| | | |
| | | font.setFontName("宋体"); |
| | | style.setFont(font); |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | titleCell.setCellStyle(style); |
| | | firow = firow + 1; |
| | | row = sheet.createRow(firow); |
| | | // |
| | | row.createCell(0).setCellValue("发文号:"); |
| | | sheet.addMergedRegion(new CellRangeAddress(firow, firow, 1, 3)); |
| | | row.createCell(1).setCellValue(inquiryNumber); |
| | | row.createCell(4).setCellValue("案卷题名:"); |
| | | sheet.addMergedRegion(new CellRangeAddress(firow, firow, 5, 9)); |
| | | |
| | | // row.createCell(4).setCellValue("档号:"); |
| | | //拿到档号 |
| | | row.createCell(5).setCellValue(caseTitle); |
| | | // 将固定行高改为自动行高,以便内容能完整显示在合并区域 |
| | | row.setHeight((short)(27.6*20)); |
| | | // |
| | | CellStyle style1 = wb.createCellStyle(); |
| | | style1.setAlignment(HorizontalAlignment.RIGHT); |
| | | style1.setVerticalAlignment(VerticalAlignment.TOP); |
| | | Font font1 = wb.createFont(); |
| | | font1.setBold(true); |
| | | font1.setFontHeightInPoints((short) 12); |
| | | |
| | | font1.setFontName("宋体"); |
| | | style1.setFont(font1); |
| | | Cell cell2 = row.createCell(0); |
| | | cell2.setCellValue("发文号:"); |
| | | cell2.setCellStyle(style1); |
| | | |
| | | // 合并第1-3列 |
| | | int startCol1 = 1; |
| | | int endCol1 = 2; |
| | | sheet.addMergedRegion(new CellRangeAddress(firow, firow, startCol1, endCol1)); |
| | | |
| | | // 设置所有合并单元格的样式 |
| | | for (int col = startCol1; col <= endCol1; col++) { |
| | | Cell mergedCell = row.createCell(col); |
| | | mergedCell.setCellStyle(style1); |
| | | } |
| | | |
| | | // 只在起始单元格设置数据 |
| | | CellStyle style2 = wb.createCellStyle(); |
| | | style2.setAlignment(HorizontalAlignment.LEFT); |
| | | style2.setVerticalAlignment(VerticalAlignment.TOP); |
| | | Font font2 = wb.createFont(); |
| | | |
| | | font2.setFontHeightInPoints((short) 11); |
| | | |
| | | font2.setFontName("宋体"); |
| | | style2.setFont(font2); |
| | | Cell inquiryCell = row.getCell(startCol1); |
| | | inquiryCell.setCellStyle(style2); |
| | | inquiryCell.setCellValue(inquiryNumber); |
| | | Cell cell1 = row.createCell(3); |
| | | cell1.setCellValue("案卷题名:"); |
| | | cell1.setCellStyle(style1); |
| | | |
| | | // 创建一个新的样式用于案卷题名合并单元格 |
| | | CellStyle mergedCellStyle = wb.createCellStyle(); |
| | | mergedCellStyle.cloneStyleFrom(style1); // 继承原有样式 |
| | | mergedCellStyle.setAlignment(HorizontalAlignment.LEFT); // 改为左对齐 |
| | | mergedCellStyle.setWrapText(true); // 启用自动换行 |
| | | //mergedCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 |
| | | |
| | | // 合并第5-8列 |
| | | int startCol = 4; |
| | | int endCol = 8; |
| | | |
| | | // 先创建所有需要的单元格并设置样式 |
| | | for (int col = startCol; col <= endCol; col++) { |
| | | Cell mergedCell = row.createCell(col); |
| | | mergedCell.setCellStyle(mergedCellStyle); |
| | | } |
| | | |
| | | // 然后执行合并操作 |
| | | sheet.addMergedRegion(new CellRangeAddress(firow, firow, startCol, endCol)); |
| | | |
| | | // 只在起始单元格设置数据 |
| | | Cell getCas = row.getCell(startCol); |
| | | |
| | | style2.setWrapText(true); // 启用自动换行 |
| | | |
| | | getCas.setCellStyle(style2); |
| | | getCas.setCellValue(caseTitle); |
| | | // 只在起始单元格设置数据 |
| | | //ces.setCellValue(caseTitle); |
| | | |
| | | // 设置自动换行 |
| | | // row = sheet.createRow(2); |
| | | // row.createCell(0).setCellValue("案卷题名:"); |
| | | |
| | | |
| | | |
| | | // 设置自动换行 |
| | | // row = sheet.createRow(2); |
| | | // row.createCell(0).setCellValue("案卷题名:"); |
| | | firow = firow + 1; |
| | | row = sheet.createRow(firow); |
| | | |
| | | |
| | | |
| | | // 设置表头高度为43.2 |
| | | row.setHeight((short)(43.2*20)); |
| | | System.out.println("++++++++++++++++++++++++++---------++++++++++++"); |
| | | System.out.println(firow); |
| | | column = 0; |
| | |
| | | // 普通sheet处理 |
| | | // recordId = (DocumentMaterialsVo)list.get(0) |
| | | row = sheet.createRow(0); |
| | | // 设置表头高度为43.2 |
| | | row.setHeight((short)(43.2*20)); |
| | | column = 0; |
| | | } |
| | | // // 产生一行 |
| | |
| | | //写入签名 |
| | | System.out.println(list.get(0).getDataset().size()+"aaaaaaaaaaaaaaaaaaa0999"); |
| | | row = sheet.createRow(list.get(0).getDataset().size()+4); |
| | | row = sheet.createRow(list.get(0).getDataset().size()+5); |
| | | |
| | | // |
| | | CellStyle style4 = wb.createCellStyle(); |
| | | |
| | | Font font4 = wb.createFont(); |
| | | font4.setBold(true); |
| | | font4.setFontHeightInPoints((short) 12); |
| | | |
| | | font4.setFontName("宋体"); |
| | | style4.setFont(font4); |
| | | |
| | | |
| | | int in = 0 ; |
| | | for(int i = 0; i < sigArr.size(); i++) { |
| | | row.createCell(in).setCellValue(sigArr.get(i)); |
| | | in = in + 3; |
| | | for (String s : sigArr) { |
| | | Cell clr = row.createCell(in); |
| | | |
| | | |
| | | System.out.println(s); |
| | | clr.setCellStyle(style4); |
| | | clr.setCellValue(s); |
| | | |
| | | in = in + 2; |
| | | } |
| | | System.out.println(in); |
| | | |
| | | // row = sheet.createRow(0); |
| | | // row = sheet.createRow(list.get(0).getDataset().size() + 7); |
| | | |
| | | //写入注释 |
| | | for(int i = 0; i < arrAn.size();i++) { |
| | | row = sheet.createRow(list.get(0).getDataset().size() + 5+i); |
| | | int ri = list.get(0).getDataset().size() + 5+i; |
| | | // System.out.println(arrAn.get(i)); |
| | | row = sheet.createRow(list.get(0).getDataset().size() + 7+i); |
| | | int ri = list.get(0).getDataset().size() + 7+i; |
| | | sheet.addMergedRegion(new CellRangeAddress(ri, ri, 0, 3)); |
| | | if(i==0) |
| | | row.createCell(0).setCellValue("注: "+(i+1)+"、"+arrAn.get(i)); |
| | | else |
| | | row.createCell(0).setCellValue(" "+(i+1)+"、"+arrAn.get(i)); |
| | | |
| | | row.createCell(0).setCellValue(i+1+"、"+arrAn.get(i)); |
| | | } |
| | | |
| | | } |
| | |
| | | * @return 结果 |
| | | */ |
| | | public void importTemplateExcel(HttpServletResponse response, String sheetName) throws IOException { |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | // 设置文件名 |
| | | String fileName = UUID.randomUUID() + "_" + ".xlsx"; |
| | | response.setHeader("Content-Disposition", "attachment; filename=" ); |
| | | this.init(null, sheetName, Excel.Type.IMPORT); |
| | | exportExcel(response.getOutputStream()); |
| | | } |
| | |
| | | CellStyle style = wb.createCellStyle(); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); |
| | | // 设置单元格内容自动换行 |
| | | style.setWrapText(true); |
| | | style.setBorderRight(BorderStyle.THIN); |
| | | style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); |
| | | style.setBorderLeft(BorderStyle.THIN); |
| | |
| | | style.setBorderBottom(BorderStyle.THIN); |
| | | style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); |
| | | Font dataFont = wb.createFont(); |
| | | dataFont.setFontName("Arial"); |
| | | dataFont.setFontName("宋体"); |
| | | dataFont.setFontHeightInPoints((short) 10); |
| | | style.setFont(dataFont); |
| | | styles.put("data", style); |
| | | |
| | | style = wb.createCellStyle(); |
| | | style.cloneStyleFrom(styles.get("data")); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); |
| | | style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); |
| | | style.setFillPattern(FillPatternType.SOLID_FOREGROUND); |
| | | Font headerFont = wb.createFont(); |
| | | headerFont.setFontName("Arial"); |
| | | headerFont.setFontHeightInPoints((short) 10); |
| | | headerFont.setBold(true); |
| | | headerFont.setColor(IndexedColors.WHITE.getIndex()); |
| | | style.setFont(headerFont); |
| | | styles.put("header", style); |
| | | // 创建表头样式映射,根据Excel注解动态生成 |
| | | Map<String, CellStyle> headerStyles = new HashMap<String, CellStyle>(); |
| | | for (Object[] os : fields) |
| | | { |
| | | Excel excel = (Excel) os[1]; |
| | | String key = StringUtils.format("header_{}_{}", excel.headerColor(), excel.headerBackgroundColor()); |
| | | if (!headerStyles.containsKey(key)) |
| | | { |
| | | style = wb.createCellStyle(); |
| | | style.cloneStyleFrom(styles.get("data")); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); |
| | | // 设置单元格内容自动换行 |
| | | style.setWrapText(true); |
| | | // 根据注解设置表头背景色 - 已注释,表头不显示背景色 |
| | | /*if (excel.headerBackgroundColor() != IndexedColors.WHITE) { |
| | | style.setFillForegroundColor(excel.headerBackgroundColor().index); |
| | | style.setFillPattern(FillPatternType.SOLID_FOREGROUND); |
| | | }*/ |
| | | Font headerFont = wb.createFont(); |
| | | headerFont.setFontName("宋体"); |
| | | headerFont.setFontHeightInPoints((short) 11); |
| | | headerFont.setBold(true); |
| | | headerFont.setColor(excel.headerColor().index); |
| | | style.setFont(headerFont); |
| | | headerStyles.put(key, style); |
| | | } |
| | | } |
| | | styles.putAll(headerStyles); |
| | | |
| | | style = wb.createCellStyle(); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); |
| | | // 设置单元格内容自动换行 |
| | | style.setWrapText(true); |
| | | Font totalFont = wb.createFont(); |
| | | totalFont.setFontName("Arial"); |
| | | totalFont.setFontName("宋体"); |
| | | totalFont.setFontHeightInPoints((short) 10); |
| | | style.setFont(totalFont); |
| | | styles.put("total", style); |
| | |
| | | style = wb.createCellStyle(); |
| | | style.cloneStyleFrom(styles.get("data")); |
| | | style.setAlignment(HorizontalAlignment.LEFT); |
| | | // 设置单元格内容自动换行 |
| | | style.setWrapText(true); |
| | | styles.put("data1", style); |
| | | |
| | | style = wb.createCellStyle(); |
| | | style.cloneStyleFrom(styles.get("data")); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | // 设置单元格内容自动换行 |
| | | style.setWrapText(true); |
| | | styles.put("data2", style); |
| | | |
| | | style = wb.createCellStyle(); |
| | | style.cloneStyleFrom(styles.get("data")); |
| | | style.setAlignment(HorizontalAlignment.RIGHT); |
| | | // 设置单元格内容自动换行 |
| | | style.setWrapText(true); |
| | | styles.put("data3", style); |
| | | |
| | | return styles; |
| | |
| | | // 写入列信息 |
| | | cell.setCellValue(attr.name()); |
| | | setDataValidation(attr, row, column); |
| | | cell.setCellStyle(styles.get("header")); |
| | | // 根据Excel注解动态选择表头样式 |
| | | String key = StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor()); |
| | | cell.setCellStyle(styles.get(key)); |
| | | return cell; |
| | | } |
| | | |
| | |
| | | sheet.setColumnWidth(column, 6000); |
| | | } else { |
| | | // 设置列宽 |
| | | sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 200)); |
| | | sheet.setColumnWidth(column, (int) ((attr.width() + 0.72) * 256)); |
| | | } |
| | | // 如果设置了提示信息则鼠标放上去提示. |
| | | if (StringUtils.isNotEmpty(attr.prompt())) { |
| | | // 这里默认设了2-101列提示. |
| | | setXSSFPrompt(sheet, "", attr.prompt(), 1, 100, column, column); |
| | | setCellPrompt(sheet, "", attr.prompt(), 1, 100, column, column); |
| | | } |
| | | // 如果设置了combo属性则本列只能选择不能输入 |
| | | if (attr.combo().length > 0) { |
| | | // 这里默认设了2-101列只能选择不能输入. |
| | | setXSSFValidation(sheet, attr.combo(), 1, 100, column, column); |
| | | setCellValidation(sheet, attr.combo(), 1, 100, column, column); |
| | | } |
| | | } |
| | | |
| | |
| | | public Cell addCell(Excel attr, Row row, T vo, Field field, int column) { |
| | | Cell cell = null; |
| | | try { |
| | | // 设置行高 |
| | | row.setHeight(maxHeight); |
| | | // 设置行高为自动调整 |
| | | row.setHeight((short) -1); |
| | | // 根据Excel中设置情况决定是否导出,有些情况需要保持为空,希望用户填写这一列. |
| | | if (attr.isExport()) { |
| | | // 创建cell |
| | | cell = row.createCell(column); |
| | | // attr.align(); |
| | | // int align = attr.align().value; |
| | | // cell.setCellStyle(styles.get("data" + (align >= 1 && align <= 3 ? align : ""))); |
| | | // 设置单元格样式 |
| | | HorizontalAlignment align = attr.align(); |
| | | String styleKey = "data"; |
| | | if (align == HorizontalAlignment.LEFT) { |
| | | styleKey = "data1"; |
| | | } else if (align == HorizontalAlignment.CENTER) { |
| | | styleKey = "data2"; |
| | | } else if (align == HorizontalAlignment.RIGHT) { |
| | | styleKey = "data3"; |
| | | } |
| | | cell.setCellStyle(styles.get(styleKey)); |
| | | |
| | | // 用于读取对象中的属性 |
| | | Object value = getTargetValue(vo, field, attr); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 设置 POI XSSFSheet 单元格提示 |
| | | * 设置单元格提示 |
| | | * |
| | | * @param sheet 表单 |
| | | * @param promptTitle 提示标题 |
| | |
| | | * @param firstCol 开始列 |
| | | * @param endCol 结束列 |
| | | */ |
| | | public void setXSSFPrompt(Sheet sheet, String promptTitle, String promptContent, int firstRow, int endRow, |
| | | public void setCellPrompt(Sheet sheet, String promptTitle, String promptContent, int firstRow, int endRow, |
| | | int firstCol, int endCol) { |
| | | DataValidationHelper helper = sheet.getDataValidationHelper(); |
| | | DataValidationConstraint constraint = helper.createCustomConstraint("DD1"); |
| | |
| | | * @param endCol 结束列 |
| | | * @return 设置好的sheet. |
| | | */ |
| | | public void setXSSFValidation(Sheet sheet, String[] textlist, int firstRow, int endRow, int firstCol, int endCol) { |
| | | public void setCellValidation(Sheet sheet, String[] textlist, int firstRow, int endRow, int firstCol, int endCol) { |
| | | DataValidationHelper helper = sheet.getDataValidationHelper(); |
| | | // 加载下拉列表内容 |
| | | DataValidationConstraint constraint = helper.createExplicitListConstraint(textlist); |
| | |
| | | DataValidation dataValidation = helper.createValidation(constraint, regions); |
| | | // 处理Excel兼容性问题 |
| | | if (dataValidation instanceof XSSFDataValidation) { |
| | | dataValidation.setSuppressDropDownArrow(true); |
| | | dataValidation.setShowErrorBox(true); |
| | | } else { |
| | | dataValidation.setSuppressDropDownArrow(false); |
| | | dataValidation.setShowErrorBox(true); |
| | | } |
| | | |
| | | sheet.addValidationData(dataValidation); |
| | |
| | | * 创建一个工作簿 |
| | | */ |
| | | public void createWorkbook() { |
| | | this.wb = new SXSSFWorkbook(500); |
| | | this.wb = new XSSFWorkbook(); |
| | | } |
| | | |
| | | /** |
| | |
| | | return val; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |