使用EasyExcel實現web的導入和導出

最近在項目中須要實如今web端導入導出的功能,因而就去百度上尋找成熟的技術和文章,試着根據資料去實現本身的業務.因而就發現了阿里寫的EasyExcel,它以及其簡潔的代碼和配置吸引了我.
導出的文章在網上一搜一大把,並且也沒有多麼的複雜.我就轉載一篇文件https://segmentfault.com/a/1190000019472781
我就是根據這篇文章實現的導出功能.
導出實現了下一步就導入了,因而我就陷入了兩週的bug當中(本人是個小白,個人老師就是搜索引擎)
下面上圖

image.png

這個是個人excel文件,因而我就跟着EasyExcel上的配置一點點的寫(至於配置,官方代碼已經寫的很詳細了,這裏就不作介紹了)
這是個人實體類前端

/** value 列名 index 列順序 */
@ExcelProperty( index = 0)
private Integer id;
/** 員工姓名 */
@ExcelProperty( index = 1)
private String name;
/** 軍團 */
@ExcelProperty( index = 2)
private String corps;
/** 部門 */
@ExcelProperty(index = 3)
private String dept;
/** 獎勵日期 */
@ExcelProperty(index = 4)
@DateTimeFormat("yyyy-MM-dd")
private Date award_time;
/** 金額 */
@ExcelProperty( index = 5)
private Integer bounty;
/** 獎勵緣由 */
@ExcelProperty( index = 6)
private String cause;
/** 獎金來源 */
@ExcelProperty( index = 7)
private String source;
/** 憑證號 */
@ExcelProperty(index = 8)
private String voucher_number;
/** 備註 */
@ExcelProperty( index = 9)
private String remark;

這是個人後端控制器層代碼
image.png
這是個人前端代碼
image.png
這是緣由
image.png
好了,準備就緒,運行,選擇導入文件,導入
image.png
滿懷期待的報錯了
image.png
有道翻譯過來就是"將數據'序號'轉換爲整數類型的錯誤"因而對着官方文檔和本身的excel文件,發現是把我第一行的列名,也給做爲值賦給個人實體類對象了,因此纔會報這個粗.
image.png
添加這段代碼的意思就是讓它從第3行(從0開始)開始讀數據賦值.
好了,測試導入
image.png
成功.
不過在這以前,本人一直有一個問題沒有解決,就是若是我沒有手動添加get()set()方法就會報這個錯
image.png
經過debug能夠看到值都是null
image.png
但是個人excel文件內都是有值的,因而在一位不知名大佬的幫助下,意識到多是由於lombok沒有動態的生成set()方法,因此對象的屬性值全都爲null.因而我手動的添加了set方法後就導入成功了.
可是lombok中的@Data註解其中就有動態生成get()set()的做用啊,這是爲何呢?算了,能實現就好了.之後再研究吧,而後我就看到了,這個鏈式加載@Accessors(chain = true)我也沒用到啊,那就刪了吧.忽然一個想法,會不會是由於這個鏈式加載的緣由呢,因而我就把getset方法全刪了,和這個鏈式加載也刪了後一試,嗨呀成功了~~~可能就是這個鏈式加載衝突了
總結,用這個easyExcel導入導出仍是比較方便的web

相關文章
相關標籤/搜索