easypoi添加下拉預選值


原因是使用easypoi自帶的下拉預選值無效,並且還帶來了版本沖突的問題,所以只能自己來解決, easypoi的使用請參考: http://doc.wupaas.com/docs/easypoi/easypoi-1c0u9dt0lqnpl

這里是說明使用easypoi生成的Workbook之后如何給單元格設置下拉預選值,但是也有缺點,就是前提必須要知道設置下拉預選值單元格的范圍,也就是需要指定范圍,行列的范圍,原理其實是創建sheet頁,這是poi的寫法,也就是一整個模板,代碼如下:

// poi導出,生成Workbook 
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("生活老師導入","Sheet0", ExcelType.XSSF), ExportDormDTO.class, list);
// 設置下拉預選值
String[] dropDownValue = new String[]{"A", "B", "C", "D"};
String  dropDownSheetName= "生活評價";
XSSFDataValidationHelper dropDownValidationHelper = createXSSFDataValidationHelper(workbook, dropDownSheetName, dropDownValue);
DataValidationConstraint dropDOwnValidationConstraint = dropDownValidationHelper.createFormulaListConstraint(dropDownSheetName + "!$A$1:$A$" + dropDownValue.length);
Sheet firstSheet = workbook.getSheet("Sheet0");
CellRangeAddressList drowDownValueCoveringRowsAndCloumns = new CellRangeAddressList(2, firstSheet.getLastRowNum(), 5, 9);
XSSFDataValidation dropDownValidation =(XSSFDataValidation)dropDownValidationHelper.createValidation(dropDOwnValidationConstraint, drowDownValueCoveringRowsAndCloumns);
firstSheet.addValidationData(dropDownValidation);
downLoadExcel("生活老師評價導入.xlsx", response, workbook);

-------------------------------------------------------------------------------
下面是固定寫法,是上面代碼中使用到的局部方法

// 流導出
private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
    response.reset();
    response.setContentType("application/x-download");
    response.setHeader("Content-Disposition",
            "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));
    workbook.write(response.getOutputStream());
}

// 生成預選值的sheet頁
private static XSSFDataValidationHelper createXSSFDataValidationHelper(Workbook workbook, String name, String[] strList) {
    Sheet sheet = workbook.createSheet(name);
    // 循環往該sheet中設置添加下拉列表的值
    for (int i = 0; i < strList.length; i++) {
        Row row = sheet.createRow(i);
        Cell cell = row.createCell((int) 0);
        cell.setCellValue(strList[i]);
    }
    workbook.setSheetHidden(workbook.getSheetIndex(name), true);
    XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) workbook.getSheet(name));
    dvHelper.createFormulaListConstraint(name + "!$A$1:$A$" + strList.length);
    return dvHelper;
}

生面是xlsx的文檔的添加下拉預選值,至於xls的就不展示,大概一樣的道理,有問題的隨時聯系我。
wx:wz15713598138
qq: 2585700076


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM