当前位置:   article > 正文

超大Excel的读取与写入_easyexcel读取大excel

easyexcel读取大excel

             普通的Excel文件的读写,我们可以通过Apache POI提供的excel格式文件的解析来实现,当遇到超大容量的Excel,如100万的数据的解析, 除了可以用POI提供的SXSSFWorkbook来解析,还可以使用alibab的EasyExcell来实现. 两种方法的具体使用流程如下(顺便对比以下在该方法下数据的解析速度)

一、POI ----SXSSFWorkbook

  和普通的Excel的写入造作类似,只是需要创建时选择的实体类换成SXSSFWork   ,在写入时将原本小数据换成10万或更大的数据即可。

  1. Workbook workbook = new SXSSFWorkbook();
  2. FileOutputStream out = new FileOutputStream("c:\\text\\100w.xlsx")

        我们在写入一个1000000万大容量数据时 ,我们设置一个计数器来观察写入速度。

 二、EasyExcel  写入超大Excel容量的数据

        使用EasyExcel写入超大容量的Excel时,我们需要先做一些准备工作。

   首先还是需要导入jar包(对jar包的要求比较严格,必须版本是需要相互匹配兼容的)

导入jar包后,还需要准备一个实体类,为把数据写入Excel表格的列头和信息匹配做准备。

以Order订单实体类来举例:

 除了实体类外。我们还需要准备一个Converter转换类。(具体作用在上面的绿色框里有体现设置时间格式等作用,如有需要,可自行复制粘贴即可)

  1. public class LocalDateTimeConverter implements Converter<LocalDateTime> {
  2. @Override
  3. public Class<LocalDateTime> supportJavaTypeKey() {
  4. return LocalDateTime.class;
  5. }
  6. @Override
  7. public CellDataTypeEnum supportExcelTypeKey() {
  8. return CellDataTypeEnum.STRING;
  9. }
  10. @Override
  11. public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
  12. GlobalConfiguration globalConfiguration) {
  13. return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
  14. }
  15. @Override
  16. public CellData<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
  17. GlobalConfiguration globalConfiguration) {
  18. return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  19. }
  20. }

        至此,我们的准备工作已经算是完成了。可以开始执行写入或者读取的工作了。

 写入100万数据的操作:

超大Excel的读取:

 10万数据的读取所用时间3561毫秒。

        如果是用普通POI读取Excel的XSSF,10万或者100万能不能在不溢出情况下读下来都不能确定,就算内存和cpu足够坚强,能够坚持读取完成,但所耗费的时间是超级长的,使用POI的SXSSF或者EasyExcel读取超大容量的Excel文件的便捷和高效性比使用XSSF实用性高太多。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/88873
推荐阅读
相关标签
  

闽ICP备14008679号