我正在使用 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 代码值而不是逗号(,)。请帮忙解决这个问题
而不是
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”中指定名称列表的名称