Apache POI可以处理的excel文件的大小是否有任何限制?

时间:2015-12-11 17:44:53

标签: java excel apache-poi

我正在使用Apache POI创建excel表并通过java程序将数据写入其中并在不同的java程序中读取相同的文件。我听说Apache POI可以处理最大1 MB的大小?我对吗?

如果是,那么这个选项是什么?

2 个答案:

答案 0 :(得分:2)

Excel文件格式的限制在类SpreadsheetVersion中定义,只要您有足够的主内存,您就应该能够处理达到这些限制的文件。对于使用默认POI类的大型文件,您将需要大量内存,这可能是“最大文件大小”神话的来源。

如果需要,有很多方法可以克服主要内存限制:

对于编写非常大的文件,有SXSSFWorkbook允许对数据进行流式写入(由于文件的一部分只保存在内存中,因此可以执行某些限制)。 / p>

要阅读非常大的文件,请查看示例XLSX2CSV,其中显示了如何以流方式读取文件(同样,对于您可以从文件中读取的信息有一些限制,但有如果有必要,最多可以获得的方式)

答案 1 :(得分:0)

Apache POI可以处理多个MB文件,它正确使用你的内存。未提及的apache poi限制列表

protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{    
    try
    {    
        if (Drawable != null)
        {
            int w = MeasureSpec.GetSize(widthMeasureSpec);
            int h = (int)Math.Ceiling((float)w * (float)Drawable.IntrinsicHeight / (float)Drawable.IntrinsicWidth);

            SetMeasuredDimension(w, h);
        }
        else
            base.OnMeasure(widthMeasureSpec, heightMeasureSpec);

    }
    catch (Exception e)
    {
        base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
    }    
}