在使用 apache poi 从扩展名为 xlsx 的 Excel 文件中读取数据时,需要很长时间

Posted

技术标签:

【中文标题】在使用 apache poi 从扩展名为 xlsx 的 Excel 文件中读取数据时,需要很长时间【英文标题】:While Reading the data from Excel file with extension xlsx using apache poi it takes long time 【发布时间】:2016-09-19 07:00:55 【问题描述】:

使用 apache poi 读取扩展名为 xlsx 的 excel 文件时,识别扩展名需要很长时间。你能帮忙解释一下为什么需要很长时间吗?

if (file.getExcelFile().getOriginalFilename().endsWith("xls"))
    
    workbook = new HSSFWorkbook(file.getExcelFile().getInputStream());
     else if (file.getExcelFile().getOriginalFilename().endsWith("xlsx"))
    
    workbook = new XSSFWorkbook(file.getExcelFile().getInputStream());
     else 
    throw new IllegalArgumentException("Received file does not have a standard excel extension.");
    

【问题讨论】:

你为什么要自己做鉴定?你为什么不只使用WorkbookFactory.create(File)? 感谢 Gagrvarr 我已经用这种方法解决了这个问题。 【参考方案1】:

对答案添加评论 - 不要尝试自己执行此操作,Apache POI 已为您执行此操作的内置代码!

你应该使用WorkbookFactory.create(File) 来做,例如只是

workbook = WorkbookFactory.create(file.getExcelFile());

如Apache POI docs, use a File directly in preference to an InputStream 中所述,用于更快和更低的内存处理

【讨论】:

以上是关于在使用 apache poi 从扩展名为 xlsx 的 Excel 文件中读取数据时,需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章

JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案

创建错误的curropted.xlsx文件 - 无法找到匹配的构造函数:org.apache.poi.xssf.usermodel.XSSFWorkbook(java.io.FileOutputStr

用 Apache POI 读取 XLSX 数据

使用Apache POI读取Excel .XLSX时出错

对于使用apache POI转换为CSV时的xlsx单元格数据

java读写excel(POI,支持xls和xlsx两种格式)