我正在使用Grails 2.4.4,并尝试使用“apache poi”插件上载.xlsx文件,但是当文件大小约为8 MB时,我遇到了Java堆大小异常。

我的 Controller 具有以下操作和方法:

def uploadForm() {
       String fileName = "D:\\File.xlsx"
       Map excelSheetMap = process(fileName)
}

Map process(String fileName) {
    ExcelBuilder excelBuilder = new ExcelBuilder(fileName)
    //Getting JAVA Heap Size exception here when I am trying to create an object
    //of ExcelBuilder with the file
}

ExcelBuilder.groovy类文件看起来像这样
class ExcelBuilder {
   Workbook workbook
   ExcelBuilder(String fileName) {
      new File(fileName).withInputStream { is ->
         workbook = new XSSFWorkbook(is)
      }
   }
}

我也尝试过使用grails-excel-import插件,但是我遇到了同样的异常。

有人可以建议如何在grails中导入大尺寸的excel文件。提前致谢。

最佳答案

Poi确实具有很高的内存占用量。请参阅:
http://poi.apache.org/spreadsheet/index.html

您可以尝试SXSSF。 SXSSF是XSSF的API兼容流扩展,可用于必须生成非常大的电子表格且堆空间有限的情况。

07-21 18:10