[alibaba/easyexcel]下拉框数组中数据特殊格式导致下拉框失效,打开Excel报错

2024-05-11 938 views
3
@AllArgsConstructor
public class ExcelDropdownHandler implements SheetWriteHandler{

    private final int columnNo;
    private final int maxValidRow;
    private final List<String> dropdownData;

    @Override
    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        if (CollectionUtils.isEmpty(dropdownData))return;
        //起始行、终止行、起始列、终止列
        CellRangeAddressList addressList = new CellRangeAddressList(1, maxValidRow, columnNo, columnNo);
        DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper();
        //设置下拉框数据
        DataValidationConstraint constraint = helper.createExplicitListConstraint(dropdownData.toArray(new String[0]));
        DataValidation validation = helper.createValidation(constraint, addressList);
        //处理Excel兼容性问题
        if (validation instanceof XSSFDataValidation) {
            validation.setSuppressDropDownArrow(true);
            validation.setShowErrorBox(true);
        } else {
            validation.setSuppressDropDownArrow(false);
        }
        validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
        writeSheetHolder.getSheet().addValidationData(validation);
    }
}

异常提示 代码运行本身没有异常,就是当下拉框数据是["人民币[CNY]"],这样的数组时,打开Excel就报错了,但是数组里面的值换成["人民币-CNY"]就没问题了,很奇怪。 image

建议描述

回答

4

我这边尝试的两种下拉框都不会报错,你能进一步提供完整的复现代码吗 @numbpad1

3

我这边尝试的两种下拉框都不会报错,你能进一步提供完整的复现代码吗 @numbpad1

你可以试试大数据量,我在网上查到了poi的excel下拉框最多支持255个字符,不知道真的假的,同时我也试了下,确实不行,你们之前遇到过这个问题吗?

5

我这边尝试的两种下拉框都不会报错,你能进一步提供完整的复现代码吗 @numbpad1

你可以试试大数据量,我在网上查到了poi的excel下拉框最多支持255个字符,不知道真的假的,同时我也试了下,确实不行,你们之前遇到过这个问题吗?

我们没有碰上过,所以需要你提供复现bug的代码,我们来跟踪源码,看看是哪里存在的bug。你不提供复现代码没办法解决你这个issue。 @numbpad1

0

我这边尝试的两种下拉框都不会报错,你能进一步提供完整的复现代码吗 @numbpad1

你可以试试大数据量,我在网上查到了poi的excel下拉框最多支持255个字符,不知道真的假的,同时我也试了下,确实不行,你们之前遇到过这个问题吗?

我这边本地尝试了,最大支持确实就是255个char。其次我写入了10w行,都没有问题。@numbpad1

2

我这边尝试的两种下拉框都不会报错,你能进一步提供完整的复现代码吗 @numbpad1

你可以试试大数据量,我在网上查到了poi的excel下拉框最多支持255个字符,不知道真的假的,同时我也试了下,确实不行,你们之前遇到过这个问题吗?

我这边本地尝试了,最大支持确实就是255个char。其次我写入了10w行,都没有问题。@numbpad1

是的,单个cell可能就只能255个char,感谢回复,这样看来不是easyExcel的bug,我把这个issue关闭了。