日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

java實現(xiàn)excel導(dǎo)入 java批量導(dǎo)入excel數(shù)據(jù)


java實現(xiàn)excel導(dǎo)入 java批量導(dǎo)入excel數(shù)據(jù)


看完本文,你一定會有所收獲
一、介紹在上篇文章中,我們簡單的介紹了 excel 導(dǎo)入導(dǎo)出技術(shù)實踐方案,就目前而已,使用最多的開源框架主要有以下三類,分別是:
  • apache poi:poi是使用最廣的一種導(dǎo)入導(dǎo)出框架,但是缺點也很明顯,導(dǎo)出大數(shù)據(jù)量的時候,容易o(hù)om
  • easypoi:easypoi 的底層也是基于 apache poi 進(jìn)行深度開發(fā)的,它主要的特點就是將更多重復(fù)的工作,全部簡單化,避免編寫重復(fù)的代碼,最顯著的特點就是導(dǎo)出的支持非常豐富
  • easyexcel:easyexcel 是阿里巴巴開源的一款 excel 解析工具,底層邏輯也是基于 apache poi 進(jìn)行二次開發(fā)的,目前的應(yīng)用也非常廣
總的來說,easypoi 和 easyexcel 都是基于apache poi進(jìn)行二次開發(fā)的 。
不同點在于:
1、easypoi 在讀寫數(shù)據(jù)的時候,優(yōu)先是先將數(shù)據(jù)寫入內(nèi)存,因此讀寫性能非常高,這種操作平時使用的時候不會出現(xiàn)什么問題,但是當(dāng)數(shù)據(jù)量很大的時候,會出現(xiàn) oom,當(dāng)然它也提供了 sax 模式一行一行解析,需要自己根據(jù)當(dāng)前場景來實現(xiàn) 。
2、easyexcel 默認(rèn)基于 sax 模式一行一行解析,明顯降低了內(nèi)存,不會出現(xiàn) oom 情況,程序有過高并發(fā)場景的驗證,因此整體運行比較穩(wěn)定,相對于 easypoi 來說,讀寫性能稍慢!
3、easypoi 的 api 非常豐富,easyexcel 功能的支持,比較簡單 。
就小編的實際使用情況來看,easypoi 相比 easyexcel 而言,有很多的優(yōu)點,尤其是他的 api 非常豐富,但是在實際使用過程中,發(fā)現(xiàn)在導(dǎo)入幾千條數(shù)據(jù)的時候,有時容易發(fā)生異常,尤其是當(dāng)老板使用的時候,突然蹦出這么一個異常,這個時候是沒辦法容忍的 。
但是當(dāng)改用成 easyexcel 的時候,不會出現(xiàn)這個問題,因此如果你經(jīng)常要導(dǎo)入的數(shù)據(jù)量非常大,那么我推薦你使用 easyexcel 。
今天,我們就以 easyexcel 框架為例,結(jié)合實際開發(fā)案例,給大家詳細(xì)介紹一下 easyexcel 的使用,再下篇文章中,我們再來介紹 easypoi,可能也有理解不到位的地方,歡迎網(wǎng)友們批評指出!
二、程序?qū)嵗?.1、添加依賴包<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency>2.2、導(dǎo)出 exceleasyexcel 的導(dǎo)出支持兩種方式,一種是通過實體類注解方式來生成文件,另一種是通過動態(tài)參數(shù)化生成文件 。
2.2.1、實體類注解方式生成文件實體類注解方式生成文件,操作非常簡單,只需要在對應(yīng)的屬性字段上添加@ExcelProperty注解,然后填寫列名,配置就完成了,示例代碼如下:
public class UserEntity {@ExcelProperty(value = "https://www.jinnalai.com/fenxiang/姓名")private String name;@ExcelProperty(value = "https://www.jinnalai.com/fenxiang/年齡")private int age;@DateTimeFormat("yyyy-MM-dd HH:mm:ss")@ExcelProperty(value = "https://www.jinnalai.com/fenxiang/操作時間")private Date time;//set、get...}public static void main(String[] args) throws FileNotFoundException {List<UserEntity> dataList = new ArrayList<>();for (int i = 0; i < 10; i++) {UserEntity userEntity = new UserEntity();userEntity.setName("張三" + i);userEntity.setAge(20 + i);userEntity.setTime(new Date(System.currentTimeMillis() + i));dataList.add(userEntity);} //定義文件輸出位置FileOutputStream outputStream = new FileOutputStream(new File("/Users/panzhi/Documents/easyexcel-export-user1.xlsx"));EasyExcel.write(outputStream, UserEntity.class).sheet("用戶信息").doWrite(dataList);}運行程序,打開文件內(nèi)容結(jié)果!

java實現(xiàn)excel導(dǎo)入 java批量導(dǎo)入excel數(shù)據(jù)

推薦閱讀