public void officeExcelOut(OutputStream out,List<Partner> l,String level) { try { hwb = new HSSFWorkbook(); hwb = employeeDown(l,level); hwb.write(out); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } private static final String[] titles = {"所屬企業","登錄代碼", "用戶密碼","姓名", "手機(文本格式)","郵箱","等級"}; public HSSFWorkbook employeeDown(List<Partner> l,String level) {// EXcle生成 HSSFWorkbook hwb = new HSSFWorkbook(); HSSFSheet sheet = hwb.createSheet("模板"); String hiddenSheet = null; String[] strs = null; // 用於下拉的數組 HSSFRow firstrow = sheet.createRow(0); int countColumnNum = titles.length; for (int i = 0; i < countColumnNum; i++) { HSSFCell firstcell = firstrow.createCell(i); HSSFCellStyle style = hwb.createCellStyle(); //設置CELL格式爲文本格式 HSSFDataFormat format = hwb.createDataFormat(); style.setDataFormat(format.getFormat("@")); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); style.setWrapText(true); firstcell.setCellStyle(style); firstcell.setCellType(HSSFCell.CELL_TYPE_STRING); sheet.setColumnWidth(i, 6000); sheet.setDefaultColumnStyle(i, style); firstcell.setCellValue(new HSSFRichTextString(titles[i])); } hiddenSheet = "category1Hidden"; HSSFSheet category1Hidden = hwb.createSheet(hiddenSheet); // 創建隱藏域 List<String> list = new ArrayList<String>(); System.out.println("l____傳值____"+l); for (int i = 0; i <l.size(); i++) { list.add(l.get(i).getPartnerCode() + "-" + l.get(i).getPartnerName()); } String[] array= new String[list.size()]; strs= list.toArray(array); for (int j = 0; j <strs.length; j++) { category1Hidden.createRow(j+1000).createCell(0).setCellValue(strs[j]); } Name category1Name = hwb.createName(); category1Name.setNameName(hiddenSheet); category1Name.setRefersToFormula(hiddenSheet + "!A1:A" + (strs.length+1000)); // A1:A代表隱藏域創建第?列createCell(?)時。以A1列開始A行數據獲取下拉數組 System.out.println("********************************"); System.out.println("hiddenSheet____下拉框的值_____"+hiddenSheet); System.out.println("********************************"); DVConstraint constraint = DVConstraint.createFormulaListConstraint(hiddenSheet); CellRangeAddressList addressList = new CellRangeAddressList(1, 1000, 0, 0); HSSFDataValidation validation = new HSSFDataValidation(addressList, constraint); hwb.setSheetHidden(1, true); // 1隱藏、0顯示 sheet.addValidationData(validation);//下拉框數值較多,使用隱藏,防止這裏驗證過不去 // excel 等級 下拉選項 List<String> list1 = new ArrayList<String>(); System.out.println("level____傳值____"+level); if ("0".equals(level) || "".equals(level)) { list1.add("1-一級"); list1.add("2-二級"); list1.add("3-三級"); } else if ("1".equals(level)) { list1.add("2-二級"); list1.add("3-三級"); } else if ("2".equals(level)) { list1.add("3-三級"); } System.out.println("********************************"); System.out.println("list1_____下拉框的值_____"+list1); System.out.println("********************************"); String[] array1 = new String[list1.size()]; list1.toArray(array1); DVConstraint constraint1 = DVConstraint.createFormulaListConstraint(hiddenSheet); CellRangeAddressList addressList1 = new CellRangeAddressList(1, 1000, 6, 6) HSSFDataValidation validation1 = new HSSFDataValidation(addressList1, constraint1); sheet.addValidationData(validation1);//下拉框數值較少 return hwb; }
poi 表單下載下拉框,多條問題解決
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.