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大量數據讀取

相關文章
相關標籤/搜索