Ошибка при добавлении значений в выпадающий список Excel с использованием Apache POI - PullRequest
2 голосов
/ 04 августа 2011

У меня есть этот код:

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)

1 Ответ

2 голосов
/ 25 августа 2011

Полагаю, вы на самом деле ищете решение своей проблемы, а не очевидное, заявленное вам ...

Обходной путь, который я нашел, состоял в том, чтобы добавить список ограниченных элементов на дополнительный лист, защитить лист, а затем обратиться к диапазону для извлечения элементов: см. Документацию «Создание проверок данных из ячеек электронной таблицы» на http://poi.apache.org/spreadsheet/quick-guide.html

Я сделал это решение, добавил свой список на дополнительный лист, затем защитил лист. Не уверен, каково ограничение в версиях Excel для выпадающего размера / элементов, но он работал с размером / содержимым списка, подобным вашему.

Работает нормально с poi3.7.

...