Excel文件的标题数据下拉选

【Excel文件的标题数据下拉选】标题数据下拉选工具类如下:

/** * *excel导出,有码值的数据使用下拉框展示。解决下拉框最多255个字符的问题。 * *原理为新建一个隐藏状态的sheet页,用来存储下拉框的值。 * * @param wb工作簿HSSFWorkbook * * @param col当前列名 * * @param boxMap码值集合 * * @param rows正常sheet页数据,用来指定哪些行需要添加下拉框 * * @param i多个码值需要添加下拉,隐藏状态的sheet页名称不能重复,添加i值区分。 * * @param colToIndex用来指定哪些列需要添加下拉框 * * @returndataValidation */ public static HSSFDataValidation createBox1(HSSFWorkbook wb, String col, Map boxMap, int rows, int i, int colToIndex) { HSSFDataValidation dataValidation = null; String cols = ""; //查询码值集合,获取当前列的码值。 if (null != boxMap.get(col)) { cols = boxMap.get(col); } //新建隐藏状态的sheet,用来存储码值。 if (cols.length() > 0 && null != cols) { String str[] = cols.split(","); //创建sheet页 HSSFSheet sheet = wb.createSheet("hidden" + i); //向创建的sheet页添加码值数据。 for (int i1 = 0; i1 < str.length; i1++) { HSSFRow row = sheet.createRow(i1); HSSFCell cell = row.createCell((int) 0); cell.setCellValue(str[i1]); } //将码值sheet页做成excel公式 Name namedCell = wb.createName(); namedCell.setNameName("hidden" + i); namedCell.setRefersToFormula("hidden" + i + "!$A$1:$A$" + str.length); //确定要在哪些单元格生成下拉框 DVConstraint dvConstraint = DVConstraint.createFormulaListConstraint("hidden" + i); CellRangeAddressList regions = new CellRangeAddressList(1, rows, colToIndex, colToIndex); dataValidation = new HSSFDataValidation(regions, dvConstraint); //隐藏码值sheet页 int sheetNum = wb.getNumberOfSheets(); for (int n = 1; n < sheetNum; n++) { wb.setSheetHidden(n, true); } } return dataValidation; }/** * *excel导出,有码值的数据使用下拉框展示。 * * @param col列名 * * @param boxMap码值集合 * * @param firstRow插入下拉框开始行号 * * @param lastRow插入下拉框结束行号 * * @param firstCol插入下拉框开始列号 * * @param lastCol插入下拉框结束行号 * * @return */ public static HSSFDataValidation createBox(String col, Map> boxMap, int firstRow, int lastRow, int firstCol, int lastCol) { HSSFDataValidation dataValidation = null; //查询码值表 List cols = new ArrayList<>(); if (null != boxMap.get(col)) { cols = boxMap.get(col); } //设置下拉框 if (cols.size() > 0 && null != cols) { //list转数组 String[] str = cols.toArray(new String[cols.size()]); //指定0-9行,0-0列为下拉框 CellRangeAddressList cas = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol); //创建下拉数据列 DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(str); //将下拉数据放入下拉框 dataValidation = new HSSFDataValidation(cas, dvConstraint); } return dataValidation; }//设置样式 public static HSSFCellStyle createCellStyle(HSSFCellStyle cellStyle, HSSFFont font, Boolean flag, HSSFRow row) { //设置边框 //下 cellStyle.setBorderBottom(BorderStyle.THIN); //左 cellStyle.setBorderLeft(BorderStyle.THIN); //上 cellStyle.setBorderTop(BorderStyle.THIN); //右 cellStyle.setBorderRight(BorderStyle.THIN); //垂直居中 cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //设置大小 cellStyle.setFont(font); //背景色填充整个单元格 cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //填充背景色 cellStyle.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); return cellStyle; }

//创建HSSFWorkbook对象 HSSFWorkbook workbook = new HSSFWorkbook(); //创建sheet对象 HSSFSheet sheet = workbook.createSheet(); //列名样式 HSSFFont colFont = workbook.createFont(); colFont.setFontName("宋体"); colFont.setFontHeightInPoints((short) 10); //字体大小 //设置表格列宽 sheet.setDefaultColumnWidth(10); sheet.setColumnWidth(0, 6000); sheet.setColumnWidth(1, 6000); sheet.setColumnWidth(2, 6000); sheet.setColumnWidth(3, 6000); sheet.setColumnWidth(4, 6000); //第一行表头 HSSFRow row = sheet.createRow(0); HSSFCellStyle style = ExcelUtil.createCellStyle(workbook.createCellStyle(), colFont, true, row); sheet.setDefaultColumnStyle(0, style);

    推荐阅读