poi 表單下載下拉框,多條問題解決

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;  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章