我正在使用Apache POI创建excel表并通过java程序将数据写入其中并在不同的java程序中读取相同的文件。我听说Apache POI可以处理最大1 MB的大小?我对吗?
如果是,那么这个选项是什么?
答案 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);
}
}