zoukankan      html  css  js  c++  java
  • EasyPoi导出问题

    导出代码如下:
    Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), PriceExcelModel.class, priceExcelModelList); File file = FileUtil.createFile(PROCEED_DATA_SOURCE_PATH); workbook.write(new FileOutputStream(file)); workbook.close();

     当数据量超过65536时,导出结果为多个sheet,会产生不方便阅读的问题。

    如果设置最大sheet行,代码如下:

    ExportParams exportParams = new ExportParams();
            exportParams.setMaxNum(200000);
            exportParams.setType(ExcelType.HSSF);
            Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PriceExcelModel.class, priceExcelModelList);
            File file = FileUtil.createFile(PROCEED_DATA_SOURCE_PATH);
            workbook.write(new FileOutputStream(file));
            workbook.close();

    会产生如下报错,如下代码报错:

    ERROR 17:00:02 [org.jeecgframework.poi.excel.export.base.ExportBase:213] Invalid row number (65536) outside allowable range (0..65535)
    java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)
    	at org.apache.poi.hssf.usermodel.HSSFRow.setRowNum(HSSFRow.java:252)
    	at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:86)
    	at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:70)
    

     错误源为:

    public void setRowNum(int rowIndex) {
            int maxrow = SpreadsheetVersion.EXCEL97.getLastRowIndex();
            if (rowIndex >= 0 && rowIndex <= maxrow) {
                this.rowNum = rowIndex;
                if (this.row != null) {
                    this.row.setRowNumber(rowIndex);
                }
    
            } else {
                throw new IllegalArgumentException("Invalid row number (" + rowIndex + ") outside allowable range (0.." + maxrow + ")");
            }
    }
    

     后来明白了,HSSF最大sheet导出行为65536行,超出后会自动分为多个sheet。

    需要导出大量数据到同一个sheet的话,可以通过配置导出类型,代码如下:

    ExportParams exportParams = new ExportParams();
    exportParams.setType(ExcelType.XSSF);

    这样就可以成功导出了。

  • 相关阅读:
    Spark Streaming
    RDD转换DataFrame
    Spark学习笔记之-Spark远程调试
    Spark集群模式&Spark程序提交
    spark-submit的参数名称解析
    Scala java maven开发环境搭建
    git报错之index.lock
    mongodb导出数据表命令之mongoexport
    用casperjs模拟登录,支持多个账户登录
    关于casperjs的wait方法的执行顺序
  • 原文地址:https://www.cnblogs.com/sunshinekevin/p/11492802.html
Copyright © 2011-2022 走看看