如何用java代码在excel中创建可搜索下拉列表

如何用java代码在excel中创建可搜索下拉列表,java,excel,excel-formula,Java,Excel,Excel Formula,我想创建下拉列表,该列表必须作为用户类型进行搜索,必须选择所有相关值 我的Java代码是:- XSSFWorkbook workbook = new XSSFWorkbook(); // Create a blank sheet XSSFSheet sheet = workbook.createSheet("testing"); // This data needs to be written (Object[]) Map<String, Obj

我想创建下拉列表,该列表必须作为用户类型进行搜索,必须选择所有相关值

我的Java代码是:-

    XSSFWorkbook workbook = new XSSFWorkbook();

    // Create a blank sheet
    XSSFSheet sheet = workbook.createSheet("testing");

    // This data needs to be written (Object[])
    Map<String, Object[]> data = new TreeMap<String, Object[]>();
    // String fileType = ImportItemFileType.Medicine.name();
    String fileName = fileType.getType();

    Object[] columnName = new Object[1];
    columnName[0] = "AutoSearch";
    data.put("1", columnName);


    // Iterate over data and write to sheet
    Set<String> keyset = data.keySet();
    int rownum = 0;
    int cellnum = 0;
    for (String key : keyset) {
        Row row = sheet.createRow(rownum++);
        Object[] objArr = data.get(key);

        for (Object obj : objArr) {
            Cell cell = row.createCell(cellnum++);

            // System.out.println("cell num---------------------------------------------------"+
            // cellnum);
            if (obj instanceof String)
                cell.setCellValue((String) obj);
            else if (obj instanceof Integer)
                cell.setCellValue((Integer) obj);
        }
    }

    // department drop down
    List<String> list = new ArrayList<>();
    list.add("unm");
    list.add("hcg");
    list.add("star");
    list.add("changa");
    list.add(0, "");
    String[] departmentArray = new String[list.size()];
    departmentArray = list.toArray(new String[list.size()]);
    XSSFSheet hiddenDep = workbook.createSheet("hiddenDepartment");
    for (int i = 0, length = departmentArray.length; i < length; i++) {
        String name = departmentArray[i];
        System.out.println("name  "+name);
        XSSFRow row = hiddenDep.createRow(i);
        XSSFCell cell = row.createCell(0);
        cell.setCellValue(name);
    }

    DataValidation dataValidationDep = null;
    DataValidationConstraint constraintDep = null;
    DataValidationHelper validationHelperDep = null;
    validationHelperDep = new XSSFDataValidationHelper(sheet);
    CellRangeAddressList addressListDep = new CellRangeAddressList(1, 10, 0, 0);
    constraintDep = validationHelperDep
            .createFormulaListConstraint("hiddenDepartment!$A$1:$A$"
                    + departmentArray.length);
    dataValidationDep = validationHelperDep.createValidation(constraintDep, addressListDep);
    dataValidationDep.setSuppressDropDownArrow(true);
    workbook.setSheetHidden(1, true);
    dataValidationDep.setShowErrorBox(true);
    sheet.addValidationData(dataValidationDep);

    for (int j1 = 0; j1 <= cellnum; j1++) {
        if(j1 == 0){
            sheet.setColumnWidth(0, 2000);
        }else{
            sheet.autoSizeColumn(j1);
        }
    }

    String filePath = "";
    try {
        filePath = MY_PATH +  fileName + ".xlsx";

        FileOutputStream out = new FileOutputStream(new File(filePath));
        workbook.write(out);
        out.close();
        System.out
                .println("howtodoinjava_demo.xlsx written successfully on disk.");
    } catch (Exception e) {
        e.printStackTrace();
    }
xssf工作簿=新的xssf工作簿();
//创建空白工作表
XSSFSheet sheet=workbook.createSheet(“测试”);
//需要写入此数据(对象[])
映射数据=新树映射();
//String fileType=ImportItemFileType.Medicine.name();
字符串fileName=fileType.getType();
Object[]columnName=新对象[1];
columnName[0]=“自动搜索”;
data.put(“1”,列名称);
//迭代数据并写入工作表
Set keyset=data.keyset();
int rownum=0;
int-cellnum=0;
用于(字符串键:键集){
Row-Row=sheet.createRow(rownum++);
Object[]objArr=data.get(key);
用于(对象对象对象:对象对象对象){
Cell Cell=row.createCell(cellnum++);
//System.out.println(“单元格编号-------------------------------------------”+
//细胞);
if(字符串的obj实例)
cell.setCellValue((字符串)obj);
else if(obj instanceof Integer)
cell.setCellValue((整数)obj);
}
}
//部门下拉列表
列表=新的ArrayList();
列表。添加(“unm”);
列表。添加(“hcg”);
列表。添加(“星”);
列表。添加(“长安”);
列表。添加(0,“”);
String[]departmentArray=新字符串[list.size()];
departmentArray=list.toArray(新字符串[list.size()]);
XSSFSheet hiddenDep=workbook.createSheet(“hiddenDepartment”);
for(int i=0,length=departmentArray.length;i