Excel-BootExcel 導(dǎo)入導(dǎo)出組件
Excel-Boot是一款Excel導(dǎo)入導(dǎo)出解決方案組成的輕量級(jí)開(kāi)源組件。
Github地址:https://github.com/programmeres/excel-boot
碼云地址:https://gitee.com/nw1992/easy-poi
如果喜歡或愿意使用, 請(qǐng)star本項(xiàng)目或者點(diǎn)擊donate圖標(biāo)捐贈(zèng)我們
如果是企業(yè)使用, 為了產(chǎn)品推廣, 請(qǐng)通過(guò)評(píng)論、Issue、PullRequest README的企業(yè)列表告訴我們企業(yè)名稱(chēng)
有任何問(wèn)題可以通過(guò)issue或者評(píng)論告知我們, 盡力第一時(shí)間解決您的問(wèn)題
使用企業(yè)列表:
功能簡(jiǎn)介
瀏覽器導(dǎo)出Excel文件(支持單/多sheet)
瀏覽器導(dǎo)出Excel模板文件
指定路徑生成Excel文件(支持單/多sheet)
返回Excel文件(支持單/多sheet)的OutputStream, 一般用于將Excel文件上傳到遠(yuǎn)程, 例如FTP
導(dǎo)入Excel文件(支持單/多sheet)
功能強(qiáng)大
1.解決導(dǎo)出大量數(shù)據(jù)造成的內(nèi)存溢出問(wèn)題(支持分頁(yè)查詢數(shù)據(jù)庫(kù)、采用poi官方推薦api(SXSSFWorkbook), 實(shí)現(xiàn)指定行數(shù)刷新到磁盤(pán))
2.解決導(dǎo)入大量數(shù)據(jù)造成的內(nèi)存溢出問(wèn)題(支持分頁(yè)插入數(shù)據(jù)庫(kù)、采用poi官方推薦api(XSSF and SAX),采用SAX模式一行行讀取到內(nèi)存當(dāng)中去)
3.解決含有占位符的空假行造成的讀空值問(wèn)題
4.解決Long類(lèi)型或者BigDecimal的精度不準(zhǔn)問(wèn)題
組件特色
1.導(dǎo)入可以自定義解析成功或失敗的處理邏輯
2.導(dǎo)出支持分頁(yè)查詢、全量查詢, 自定義每條數(shù)據(jù)的處理邏輯
3.內(nèi)置緩存, 3萬(wàn)條11列數(shù)據(jù), 排除查詢數(shù)據(jù)所用時(shí)間, 第一次導(dǎo)出2.2s左右、第二次導(dǎo)出在1.4s左右;第一次導(dǎo)入3.5s左右、第二次導(dǎo)入2.5s左右
4.注解操作, 輕量且便捷
5.內(nèi)置常用正則表達(dá)式類(lèi)RegexConst(身份證號(hào)、手機(jī)號(hào)、金額、郵件)
6.可配置是否適配單元格寬度, 默認(rèn)開(kāi)啟(單元格內(nèi)容超過(guò)20個(gè)漢字不再增加寬度, 3萬(wàn)條11列數(shù)據(jù), 耗時(shí)50ms左右, 用時(shí)與數(shù)據(jù)量成正比)
7.假如出現(xiàn)異常,Sheet、行、列位置也都一并打印
8.注解中的用戶自定義字符串信息以及Excel信息已全部trim,不用擔(dān)心存在前后空格的風(fēng)險(xiǎn)
9.Excel樣式簡(jiǎn)潔、大方、美觀
10.導(dǎo)出的單條數(shù)據(jù)假如全部屬性都為null或0或0.0或0.00或空字符串者null字符串,自動(dòng)忽略,此特性也可讓用戶自定義忽略規(guī)則
11.除了直接返回OutputStream的方法以外的導(dǎo)出方法, 正常或異常情況都會(huì)自動(dòng)關(guān)閉OutputStrem、Workbook流
組件需知
導(dǎo)入&導(dǎo)出
1.導(dǎo)入和導(dǎo)出只支持尾綴為xlsx的Excel文件
2.標(biāo)注注解的屬性順序即Excel列的排列順序
3.時(shí)間轉(zhuǎn)化格式(dateFormat)默認(rèn)為“yyyy-MM-dd HH????ss“
導(dǎo)入
1.當(dāng)導(dǎo)入Excel, 讀取到空行, 則停止讀取當(dāng)前Sheet的后面數(shù)據(jù)行
2.導(dǎo)入Excel文件, 單元格格式使用文本或者常規(guī), 防止出現(xiàn)不可預(yù)測(cè)異常
3.導(dǎo)入字段類(lèi)型支持:Date、Short(short)、Integer(int)、Double(double)、Long(long)、Float(float)、BigDecimal、String類(lèi)型
4.導(dǎo)入BigDecimal字段精度默認(rèn)為2, roundingMode默認(rèn)為BigDecimal.ROUND_HALF_EVEN, scale設(shè)置為-1則不進(jìn)行格式化
5.第一行有效單元格內(nèi)必須包含內(nèi)容并且以第一行為依據(jù), 導(dǎo)入Excel文件列數(shù)必須等于標(biāo)注注解的屬性數(shù)量
6.Date類(lèi)型字段,Excel與時(shí)間轉(zhuǎn)化格式(dateFormat)相比,格式要保持一致(反例:2018/12/31和“yyyy-MM-dd“)并且長(zhǎng)度要一致或更長(zhǎng)(反例:"2018-12-31"和yyyy-MM-dd HH????ss"),否則SimpleDateFormat將解析失敗,報(bào) “Unparseable date:”
導(dǎo)出
1.導(dǎo)出BigDecimal字段默認(rèn)不進(jìn)行精度格式化
2.分頁(yè)查詢默認(rèn)從第一頁(yè)開(kāi)始, 每頁(yè)3000條
3.Excel每超過(guò)2000條數(shù)據(jù), 將內(nèi)存中的數(shù)據(jù)刷新到磁盤(pán)當(dāng)中去
4.使用分Sheet導(dǎo)出方法, 每8萬(wàn)行數(shù)據(jù)分Sheet
5.當(dāng)使用(exportResponse、exportStream、generateExcelStream)方法時(shí), 當(dāng)單個(gè)Sheet超過(guò)100萬(wàn)條則會(huì)分Sheet
6.標(biāo)注屬性類(lèi)型要與數(shù)據(jù)庫(kù)類(lèi)型保持一致
7.如果想提高性能, 并且內(nèi)存允許、并發(fā)導(dǎo)出量不大, 可以根據(jù)實(shí)際場(chǎng)景適量改變分頁(yè)條數(shù)和磁盤(pán)刷新量
