Java 使用Apache POI在Excel下拉列表中添加值时出错
我有以下代码:Java 使用Apache POI在Excel下拉列表中添加值时出错,java,apache-poi,Java,Apache Poi,我有以下代码: CellRangeAddressList addressListTax = new CellRangeAddressList(rowCount, rowCount, labelRowCnt, labelRowCnt); DVConstraint dvConstraintTax = DVConstraint.createExplicitListConstraint(new String[] { "I0-Input Tax 0%", "I1-Input Tax 10%
CellRangeAddressList addressListTax = new CellRangeAddressList(rowCount, rowCount, labelRowCnt, labelRowCnt);
DVConstraint dvConstraintTax = DVConstraint.createExplicitListConstraint(new String[] {
"I0-Input Tax 0%", "I1-Input Tax 10% ", "I2-Input Tax 12%","IE-Input Tax Exempt",
"J0-0% Input Tax,China ","J1-17% Input Tax,China ","J2-13% Input Tax,China ",
"J3-6% Input Tax,China","J4-4% Input Tax,China ","J5-3% Input Tax,China",
"J6-7% Input Tax,China", "L1-5% Luxury Tax,China ", "O0-Zero-rated Sales ",
"O1-Output Tax 10% ","O2-Output Tax 12% ","OE-Output Tax Exempt ",
"P0-Purchase Tax 0% ","P1-Tax on Purchase 0%","P2-Tax on Purchases 5% ",
"P3-Tax on Purchases 7%", "P4-Out of Scope purchase 0% ", "P5-Imported Purchase 0% ",
"S0-Exempted Tax on Sales ","S1-Tax on Sales 0% ","S2-Tax on Sales 5% ",
"S3-7% GST ","S3-Tax on Sales 7%","X0-0% Output Tax,China ","X0-China Output Tax 0%",
"X1-17% Output Tax,China","X2-13% Output Tax,China"
});
HSSFDataValidation dataValidationTax = new HSSFDataValidation(addressListTax,dvConstraintTax);
dataValidationTax.setSuppressDropDownArrow(false);
sheet.addValidationData(dataValidationTax);
Linux中的此抛出错误:
java.lang.IllegalArgumentException: String literals in formulas can't be bigger than 255 characters ASCII
11/08/03 13:36:58 java.lang.IllegalArgumentException: String literals in formulas can't be bigger than 255 characters ASCII
11/08/03 13:36:58 at myorg.apache.poi.hssf.record.formula.StringPtg.<init>(StringPtg.java:65)
11/08/03 13:36:58 at myorg.apache.poi.hssf.usermodel.DVConstraint.createListFormula(DVConstraint.java:413)
11/08/03 13:36:58 at myorg.apache.poi.hssf.usermodel.DVConstraint.createFormulas(DVConstraint.java:386)
11/08/03 13:36:58 at myorg.apache.poi.hssf.usermodel.HSSFDataValidation.createDVRecord(HSSFDataValidation.java:197)
11/08/03 13:36:58 at myorg.apache.poi.hssf.usermodel.HSSFSheet.addValidationData(HSSFSheet.java:378)
11/08/03 13:36:58 at com.DemoPxExcel.doAction(DemoPxExcel.java:217)
11/08/03 13:36:58 at com.ListRFQ.doAction(ListRFQ.java:198)
java.lang.IllegalArgumentException:公式中的字符串文本不能大于255个字符
11/08/03 13:36:58 java.lang.IllegalArgumentException:公式中的字符串文本不能大于255个ASCII字符
11/08/03 13:36:58在myorg.apache.poi.hssf.record.formula.StringPtg.(StringPtg.java:65)
11/08/03 13:36:58在myorg.apache.poi.hssf.usermodel.DVConstraint.createListFormula(DVConstraint.java:413)
11/08/03 13:36:58在myorg.apache.poi.hssf.usermodel.DVConstraint.createFormulas(DVConstraint.java:386)
11/08/03 13:36:58在myorg.apache.poi.hssf.usermodel.HSSFDataValidation.createDVRecord(HSSFDataValidation.java:197)
11/08/03 13:36:58在myorg.apache.poi.hssf.usermodel.HSSFSheet.addValidationData(HSSFSheet.java:378)
11/08/03 13:36:58在com.DemoPxExcel.doAction(DemoPxExcel.java:217)
11/08/03 13:36:58在com.ListRFQ.doAction(ListRFQ.java:198)
我假设您实际上是在寻找问题的解决方案,而不是向您陈述显而易见的问题
我找到的解决方法是将受约束项列表添加到辅助工作表中,保护该工作表,然后参考提取项的范围:请参阅
我做了这个解决方案,将我的列表添加到辅助工作表中,然后保护工作表。不确定Excel版本中下拉大小/项目的限制是什么,但它使用的列表大小/内容与您的类似
poi3.7运行良好。Excel不允许引用其他工作表进行数据验证!