java 读CSV 和 Excel

一、csv和excel读写对比 

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

测试数据格式一

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

耗时时间统计: 工具

测试数据格式二

生成数据:测试

耗时统计:spa

相同格式相同行数对比:excel

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

csv文件读取工具类code

excel文件读取工具类blog

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

若是用以上excel工具类读写通常需求均可以应付,若是遇到大量数据的读写,使用inputstream加载到内存的方式可能就会出现OOM问题。开发

二、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; }

三、excel大量数据读 

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

相关文章
相关标签/搜索