代码之家  ›  专栏  ›  技术社区  ›  Alexander Gromyko

Apache POI(excel)性能getSheet()与createSheet()的比较

  •  0
  • Alexander Gromyko  · 技术社区  · 6 年前

    构造非常简单,我输入了对象列表(比如说100k条记录),然后将这个列表放入excel表格。 我注意到,如果我使用createSheet(),只需几秒钟就可以填充工作表。 如果我使用getSheet(例如,我在报告中使用模板),填充报告需要几分钟的时间。对此有什么解释?

    public void populateSheet(List<Objects> input) {
            XSSFSheet rowsSheet = getWorkbook().createSheet("SheetName");
            int l = 1;
            for (Objects row : input) {
                 .....
            }
    
    public void populateSheet(List<Objects> input) {
            XSSFSheet rowsSheet = getWorkbook().getSheet("SheetName");
            int l = 1;
            for (Objects row : input) {
                 .....
            }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Alan Guégan    6 年前

    根据我的经验,excel文件可能包含很多隐藏内容,即使在打开文件时什么也看不到。 我会尝试重新创建一个新版本的工作表,并通过复制/粘贴重新创建标题。然后,测试你的程序的速度。