美文网首页FAQ
easyExcel使用报错

easyExcel使用报错

作者: liaijuyyer | 来源:发表于2021-11-23 18:38 被阅读0次

    报错信息

    easyexcel The maximum length of cell contents (text) is 32,767 characters
    

    使用easyexcel向excel中写内容出现了单元格大小不能超过32,767的限制,这是因为excel 2007限制单个cell不能超过32767个字符

    解决办法
    重写poi包下SpreadsheetVersion类
    在自己的项目文件夹下创建org.apache.poi.ss.SpreadsheetVersion 类,复制poi中的该类源码,excel2007中的最后一个值改为int类型最大值。重试导出问题解决。

    /**
     * @author liliang
     * @date 2021/11/23
     **/
    public enum SpreadsheetVersion {
        /**
         * Excel97 format aka BIFF8
         * <ul>
         * <li>The total number of available rows is 64k (2^16)</li>
         * <li>The total number of available columns is 256 (2^8)</li>
         * <li>The maximum number of arguments to a function is 30</li>
         * <li>Number of conditional format conditions on a cell is 3</li>
         * <li>Number of cell styles is 4000</li>
         * <li>Length of text cell contents is 32767</li>
         * </ul>
         */
        EXCEL97(0x10000, 0x0100, 30, 3, 4000, 32767),
    
        /**
         * Excel2007
         *
         * <ul>
         * <li>The total number of available rows is 1M (2^20)</li>
         * <li>The total number of available columns is 16K (2^14)</li>
         * <li>The maximum number of arguments to a function is 255</li>
         * <li>Number of conditional format conditions on a cell is unlimited
         * (actually limited by available memory in Excel)</li>
         * <li>Number of cell styles is 64000</li>
         * <li>Length of text cell contents is 32767</li>
         * <ul>
         */
        EXCEL2007(Integer.MAX_VALUE, Integer.MAX_VALUE, 255, Integer.MAX_VALUE, 64000, Integer.MAX_VALUE);
    
        private final int _maxRows;
        private final int _maxColumns;
        private final int _maxFunctionArgs;
        private final int _maxCondFormats;
        private final int _maxCellStyles;
        private final int _maxTextLength;
    
        private SpreadsheetVersion(int maxRows, int maxColumns, int maxFunctionArgs, int maxCondFormats, int maxCellStyles, int maxText) {
            _maxRows = maxRows;
            _maxColumns = maxColumns;
            _maxFunctionArgs = maxFunctionArgs;
            _maxCondFormats = maxCondFormats;
            _maxCellStyles = maxCellStyles;
            _maxTextLength = maxText;
        }
    
        /**
         * @return the maximum number of usable rows in each spreadsheet
         */
        public int getMaxRows() {
            return _maxRows;
        }
    
        /**
         * @return the last (maximum) valid row index, equals to <code> getMaxRows() - 1 </code>
         */
        public int getLastRowIndex() {
            return _maxRows - 1;
        }
    
        /**
         * @return the maximum number of usable columns in each spreadsheet
         */
        public int getMaxColumns() {
            return _maxColumns;
        }
    
        /**
         * @return the last (maximum) valid column index, equals to <code> getMaxColumns() - 1 </code>
         */
        public int getLastColumnIndex() {
            return _maxColumns - 1;
        }
    
        /**
         * @return the maximum number arguments that can be passed to a multi-arg function (e.g. COUNTIF)
         */
        public int getMaxFunctionArgs() {
            return _maxFunctionArgs;
        }
    
        /**
         * @return the maximum number of conditional format conditions on a cell
         */
        public int getMaxConditionalFormats() {
            return _maxCondFormats;
        }
    
        /**
         * @return the maximum number of cell styles per spreadsheet
         */
        public int getMaxCellStyles() {
            return _maxCellStyles;
        }
    
        /**
         *
         * @return the last valid column index in a ALPHA-26 representation
         *  (<code>IV</code> or <code>XFD</code>).
         */
        public String getLastColumnName() {
            return CellReference.convertNumToColString(getLastColumnIndex());
        }
    
        /**
         * @return the maximum length of a text cell
         */
        public int getMaxTextLength() {
            return _maxTextLength;
        }
    }
    

    相关文章

      网友评论

        本文标题:easyExcel使用报错

        本文链接:https://www.haomeiwen.com/subject/pyawtrtx.html