最近在項目中須要實如今web端導入導出的功能,因而就去百度上尋找成熟的技術和文章,試着根據資料去實現本身的業務.因而就發現了阿里寫的EasyExcel,它以及其簡潔的代碼和配置吸引了我. 導出的文章在網上一搜一大把,並且也沒有多麼的複雜.我就轉載一篇文件https://segmentfault.com/a/1190000019472781 我就是根據這篇文章實現的導出功能. 導出實現了下一步就導入了,因而我就陷入了兩週的bug當中(本人是個小白,個人老師就是搜索引擎) 下面上圖
這個是個人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;
這是個人後端控制器層代碼
這是個人前端代碼
這是緣由
好了,準備就緒,運行,選擇導入文件,導入
滿懷期待的報錯了
有道翻譯過來就是"將數據'序號'轉換爲整數類型的錯誤"因而對着官方文檔和本身的excel文件,發現是把我第一行的列名,也給做爲值賦給個人實體類對象了,因此纔會報這個粗.
添加這段代碼的意思就是讓它從第3行(從0開始)開始讀數據賦值.
好了,測試導入
成功.
不過在這以前,本人一直有一個問題沒有解決,就是若是我沒有手動添加get()set()方法就會報這個錯
經過debug能夠看到值都是null
但是個人excel文件內都是有值的,因而在一位不知名大佬的幫助下,意識到多是由於lombok沒有動態的生成set()方法,因此對象的屬性值全都爲null.因而我手動的添加了set方法後就導入成功了.
可是lombok中的@Data註解其中就有動態生成get()set()的做用啊,這是爲何呢?算了,能實現就好了.之後再研究吧,而後我就看到了,這個鏈式加載@Accessors(chain = true)我也沒用到啊,那就刪了吧.忽然一個想法,會不會是由於這個鏈式加載的緣由呢,因而我就把getset方法全刪了,和這個鏈式加載也刪了後一試,嗨呀成功了~~~可能就是這個鏈式加載衝突了
總結,用這個easyExcel導入導出仍是比較方便的web