java 读CSV 和 Excel

摘要:
如果您使用上述excel工具类进行读写,则可以满足一般要求。如果您遇到大量的数据读写,使用inputstream加载到内存中可能会遇到OOM问题。“);}返回wb;}3。如果您在Excel中读取大量数据并直接使用工作簿加载数据,则会出现OOM异常。一个好方法是分批阅读。参考:在Excel中读取大量数据

1、csv和excel读写对比 

开发中经常遇到数据导入和导出功能,csv 和 excel是最常见的数据格式,本文比较了下csv和excel读写相同数据的效率: 

测试数据格式一

java 读CSV 和 Excel第1张

用上面模板数据生成的测试:

java 读CSV 和 Excel第2张

耗时时间统计: 

java 读CSV 和 Excel第3张

测试数据格式二

java 读CSV 和 Excel第4张

生成数据:

java 读CSV 和 Excel第5张

耗时统计:

java 读CSV 和 Excel第6张

相同格式相同行数对比:

  • csv文件比excel文件稍大
  • csv读取/写入比excel快

csv文件读取工具类

excel文件读取工具类

工具类可以看出:csv读写是以行为单位来实现的;excel读取inputstream是直接加载到内存的。

如果用以上excel工具类读写一般需求都可以应付,如果遇到大量数据的读写,使用inputstream加载到内存的方式可能就会出现OOM问题。

2、excel大量数据写

excel工具类里处理了大量写的问题(SXSSFWorkbook分片对excel进行写入,上例中的100w测试数据就是这么写入的):

    /**
     * 创建一个Workbook
     * @param fileType
     * @return
     * @throws Exception
     */
    private static Workbook createWorkBook(String fileType) throws IOException {
        Workbook wb;
        if (excel2003L.equals(fileType)) {
            //2003-
            wb = new HSSFWorkbook();
        } else if (excel2007U.equals(fileType)) {
            //2007+  内存留存数据
            wb = new SXSSFWorkbook(10000);
        } else {
            throw new IOException("解析的文件格式有误!");
        }
        return wb;
    }

3、excel大量数据读 

大量数据读取直接使用workbook加载会出现OOM异常,一个好的办法是分批读取,参考:excel大量数据读取

免责声明:文章转载自《java 读CSV 和 Excel》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Centos7 aspose.words使用Linuxs word转pdf 中文字体异常【转】 SpringCloudAlibaba之Sentinel流量控制 SpringCloudAlibaba微服务实战教程系列下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PL/SQL 导入excel表格到oracle数据表

通过使用PL/SQL 批量查询取数时,将excel中的每一列数据复制黏贴进新建的中间表,黏贴时会有贴歪的情况,也就是某些列会从第二第三行开始插入整列,导致数据乱掉,然后好像又不支持批量删除整列数据,所以一次性导入整张excel表是最佳方法啦。 第一步: 将excel中要插入oracle的数据全部选中:(必须选中,不然导不进数据库) 第二步: 然后另存为:...

JS实现纯前端将数据导出Excel两种方式亲测有效

由于项目需要,需要在不调用后台接口的情况下,将json数据导出到excel表格,参考了好多资料以及很多大佬写的博客终于实现,兼容chrome没问题,其他还没有测试过,这边介绍两种实现方式,并附上代码和gif动图,博主不才还望轻喷,代码可直接copy运行 方法一 将table标签,包括tr、td等对json数据进行拼接,将table输出到表格上实现,这种方法...

laravel 导出插件

转发:https://blog.csdn.net/gu_wen_jie/article/details/79296470 版本:laravel5           php 5.6 安装步骤: 一、安装插件 ①、首先在Laravel项目根目录下使用Composer安装依赖: composer require "maatwebsite/excel:~2.1....

thinkphp整合系列之phpexcel生成生成excel文件

在后台管理中会经常需要将数据生成excel表格的; php生成excel有两种方案; 一种是通过phpexcel生成xls格式的表格文件; 另一种则直接通过逗号换行生成csv格式的表格文件; 这里先讲解thinkphp整合phpexcel的过程; 示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadm...

java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)

主要应用技术:poi + betwixt + reflect 一、实际应用过程 1.创建与目标表结构一样,表名为‘{目标表名}_import’的临时表; 2.创建用于存储导入问题数据的表:t_import_error (只需创建一张); Name Code Data Type Length Precision Mandatory Primary Iden...

JAVA之编码---->CSV在文本下是正常的,用EXCEL打开是乱码的问题

JAVA之编码---->CSV在文本下是正常的,用EXCEL打开是乱码的问题 在JAVA下输出文件流,保存成CSV(用UTF-8)文件,怎么处理用EXCEL下是乱码,但是在记事本等其他软件都是正常的,同时显示也是UTF-8的编码,经过测试发现如下结果: 1、EXCEL只能打开ANSI的编码,而ANSI需要当前操作系统是什么编码,就用什么编码。如中文...