当前位置: 首页 > 知识库问答 >
问题:

Apache POI只读取大型Excel文件的第一行

支阳波
2023-03-14

我可以使用Apache POI只读取Excel文件的第一行吗?我不想读取整个文件,因为它有50,000行,读取最多需要10分钟(性能是一场灾难)。我通过文件上传获取字节。我的选项是字节数组或InputStream。现在我正在这样做:

Workbook workbook = new XSSFWorkbook(excelByteStream); //This line takes a lot of time, while debugging up to 10 minutes
Sheet firstSheet = workbook.getSheetAt(0);
DataFormatter df = new DataFormatter();
List<ColumnPanel> columnPanels = new ArrayList<>();
int i = 0;

for (Cell cell : firstSheet.getRow(0))
{
    columnPanels.add(new ColumnPanel(df.formatCellValue(cell), i++));
}

共有1个答案

范华清
2023-03-14

InputStream is=新文件InputStream(新文件(“/path/to/workbook.xlsx”));

工作簿=StreamingReader。生成器()。rowCacheSize(100)。缓冲区大小(4096)。打开(is);

工作表=工作簿。getSheetAt(0);

行firstRow=sheet.row迭代器(). Next();

您可以使用此库:https://github.com/monitorjbl/excel-streaming-reader

好的指南:用于阅读的Apache POI流(SXSSF)

 类似资料:
  • 我在用图书馆 我在努力 库,但无法将其转换为工作簿 注意:在最终结果中,我希望返回XSSFWorkbook 上面的代码会内存溢出,任何帮助都将提前感谢

  • 我正在使用camel-ftp从远程服务器获取文件。当文件被移动时,我需要读取第一行,这是一个头,并在路由的其余部分用它设置骆驼头。我需要为它构建一个自定义处理器吗?我想到了.split(),但它会解析文件中的每一行(这个文件很大)。

  • 我正在尝试读取一个大的XLSX文件。Excel文件大约有500k行,我需要读col 2。 它一直打印到第39723行,然后抛出以下异常 main.java:484=If(!cell.getStringCellValue().ToString().trim().IsEmpty())如果我删除该行并只打印行号,就可以正常工作。我需要帮助如何获得col2的字符串值。

  • 我遵循这个http://blog.kondratev.pro/2015/08/reading-xlsx-on-android-4-and-hopefully.html对其进行了编码。 尝试逐行读取: 但结果却是:

  • 问题内容: 我的应用程序需要什么 1)读取.xls或.xlsx格式的大型excel文件 2)将每一列插入数据库中的一行,上一列作为下一列的父级 意味着如果我有5列和30,000行,那么我想插入1列作为父级, 第二列是第一列的子级,第三列是第二列的子级,依此类推…即树形结构 现在任何人都可以建议我最好的API以Java语言完成此操作。 经过一番谷歌搜索后,我发现现在有很多API,但这是最好的 参考见

  • 问题内容: 我正在尝试通过Apache POI读取大型Excel文件xlsx,例如40-50 MB。我的内存不足异常。当前的堆内存为3GB。 我可以阅读较小的excel文件,没有任何问题。我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回。 我首先开始使用, 但是每个Apache POI API的使用成本很高,因此我改用OPC封装方式,但效果仍然相同。我