1. 程式人生 > 其它 >Poi(一)- excel新增下拉候選框(上)

Poi(一)- excel新增下拉候選框(上)

技術標籤:poiexceljavapoi

寫這個部落格的目的主要是記錄一下工作中遇到的問題,方便以後查閱,畢竟記憶力越來越不好了

1 excel是怎麼新增下拉候選框的

在這裡插入圖片描述
選中某一個單元格,徐娜則資料驗證->驗證條件,選擇序列,在來源處輸入下拉框資料,以英文逗號分隔

2 java程式碼怎麼新增下拉候選框

2.1 hssf

 public static void sheetConstraintHSSF(final Sheet sheet, final int firstRow, final int lastRow,
            final int firstCol,
            final
int lastCol, final List<String> strings) { // 生成下拉列表 只對(firstRow,lastRow, firstCol, lastCol)單元格有效 final CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol); // 生成下拉框內容 final DVConstraint dvConstraint =
DVConstraint.createExplicitListConstraint(strings.toArray(new String[1])); final HSSFDataValidation dataValidation = new HSSFDataValidation(cellRangeAddressList, dvConstraint); // 對sheet頁生效 sheet.addValidationData(dataValidation); }

說說這幾個引數:

  • 1 sheet頁,要新增下拉框的sheet
  • 2 firstRow,從多少行開始新增
  • 3 lastRow,到多少行截止
  • 4 firstCol, lastCol,在哪一列上新增。
  • 5 strings, 下拉列表的資料,如圖中的遼寧,大連等

2.2 xssf

public static void sheetConstraintXSSF(final Sheet sheet, final int firstRow, final int lastRow,
            final int firstCol, final int lastCol, final List<String> strings) {
        //   生成下拉列表 只對(firstRow,lastRow, firstCol, lastCol)單元格有效
        final CellRangeAddressList cellRangeAddressList =
                new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
        final XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet);
        final XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
                .createExplicitListConstraint(strings.toArray(new String[1]));
        final XSSFDataValidation validation =
                (XSSFDataValidation) dvHelper.createValidation(dvConstraint, cellRangeAddressList);
        validation.setShowErrorBox(true);
        sheet.addValidationData(validation);
    }

引數同上2.1

2.3 存在的問題

這種給excel新增下拉框的方式,下拉資料不能太多,因為excel的資料驗證序列部分有長度限制