java 讀CSV 和 Excel


1、csv和excel讀寫對比 

開發中經常遇到數據導入和導出功能,csv 和 excel是最常見的數據格式,本文比較了下csv和excel讀寫相同數據的效率: 

測試數據格式一

用上面模板數據生成的測試:

耗時時間統計: 

測試數據格式二

生成數據:

耗時統計:

相同格式相同行數對比:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM