使用 poi 进行显式列表约束的数据验证时,无法在单元格内容中显示逗号值

问题描述 投票:0回答:1

我正在使用 Apache POI(v 3.8)为包含数据的单元格添加下拉列表 验证。但是逗号(,)值被分隔为列表中的另一个值。除了逗号(,)之外,它工作正常并检查下面的屏幕截图

代码

DataValidation dataValidation = null;
DataValidationConstraint constraint = null;
DataValidationHelper validationHelper = null;
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet1=(XSSFSheet) wb.createSheet("sheet1");

validationHelper=new XSSFDataValidationHelper(sheet1);
CellRangeAddressList addressList = new  CellRangeAddressList(1,10,1,1);
constraint =validationHelper.createExplicitListConstraint(new String[]{"SELECT","A,B", "C%D","B$D", "C&D","A( A & B)"});
dataValidation = validationHelper.createValidation(constraint, addressList);
dataValidation.setSuppressDropDownArrow(true);      
sheet1.addValidationData(dataValidation);
FileOutputStream fileOut;
        try {
            fileOut = new FileOutputStream("f:\\test-1.xlsx");
              wb.write(fileOut);
                fileOut.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

我尝试用 ASCII 代码替换。但是附加了 ASCII 代码值而不是逗号(,)。请帮忙解决这个问题

java excel apache-poi
1个回答
0
投票

而不是

validationHelper.createExplicitListConstraint(value)

选择

validationHelper.createFormulaListConstraint(value);

您必须创建一个单独的姓名列表,但它会起作用。

Name namedCell = book.createName();
namedCell.setNameName("list");
namedCell.setRefersToFormula("'" + sheet.getSheetName() + "'!$" + "A$1:$" + "A$2");

Cell cell = sheet.createRow(0).createCell(0);
cell.setCellValue("item");
    

并在“value”中指定名称列表的名称

© www.soinside.com 2019 - 2024. All rights reserved.