我想要一个包含以下条目的组合框:
{"0,5", "1", "1,5", "2", "2,5"}
我使用数据验证:
DataValidation dataValidation = null;
DataValidationConstraint constraint = null;
DataValidationHelper validationHelper = null;
validationHelper = new XSSFDataValidationHelper(sheet);
CellRangeAddressList addressList = new CellRangeAddressList(row, row, col, col);
constraint = validationHelper.createExplicitListConstraint(list);
dataValidation = validationHelper.createValidation(constraint, addressList);
dataValidation.setSuppressDropDownArrow(true);
sheet.addValidationData(dataValidation);
该列表具有以下结构:
列表=新字符串[]{“0,5”,“1”,“1,5”,“2”,“2,5”}
但是在生成excel文件之后,下拉列表中还有其他内容。
0, 5, 1, 1, 5
为什么?
如果我使用点符号(0.5,1,1.5),下一个问题是,当我从组合框中选择时,excel会自动将其格式化为一个日期,例如1.5->01。可以
1条答案
按热度按时间zysjyyx41#
从你的描述看来
Excel
十进制分隔符是当前区域设置中的逗号。所以这个逗号{"0,5", "1", "1,5", "2", "2,5"}
与列表约束公式中用作列表分隔符的逗号冲突。这是因为此列表约束公式将<formula1>"0,5,1,1,5,2,2,5"</formula1>
.使用时
{"0.5", "1", "1.5", "2", "2.5"}
,列表约束公式为<formula1>"0.5,1,1.5,2,2.5"</formula1>
. 但是现在这个公式中的点与您的区域设置冲突,在日期文本中逗号作为十进制分隔符,点作为分隔符。这是一个众所周知的问题
Excel
问题。当前Excel
版本通过使用不同类型的存储列表约束来解决此问题:<x12ac:list>"0,5",1,"1,5",2,"2,5"</x12ac:list>
而不是:<formula1>"0,5,1,1,5,2,2,5"</formula1>
. 但是apache poi
不支持此操作。作为一种解决方法,我建议使用隐藏的工作表来存储列表项。
例子: