摘要:日常工作中是我們經常需要處理的文件報表的生成數據的導出幾乎每個項目都需要寫對應的處理作者也是編寫這塊代碼大軍的一員能否有方法讓我們不用重復編寫代碼呢能否只要簡單配置就可以完成我們的生成呢作者分析了和對象的關系發現就是我們的一個對象是我們的一
日常工作中,Excel是我們經常需要處理的文件,報表的生成,數據的導出,幾乎每個項目都需要寫對應的處理.作者也是編寫這塊代碼大軍的一員,能否有方法讓我們不用重復編寫代碼呢,能否只要簡單配置就可以完成我們的Excel生成呢,
作者分析了Excel和對象的關系,發現Row就是我們的一個對象cell是我們的一個屬性,從而開發了Easypoi,
下面講解下用Excel 如何幾乎不寫代碼的完成導入導出
首先是我們以一個對象,拿最簡單的學生和老師的對象來舉例子,講解下常見的對象關聯關系,Easypoi是如何處理的
首先是課程,這個是,我們的導出主要對象
@ExcelTarget("courseEntity") public class CourseEntity implements java.io.Serializable { /** 主鍵 */ private String id; /** 課程名稱 */ @Excel(name = "課程名稱", orderNum = "1", width = 25,needMerge = true) private String name; /** 老師主鍵 */ //@ExcelEntity(id = "major") private TeacherEntity chineseTeacher; /** 老師主鍵 */ @ExcelEntity(id = "absent") private TeacherEntity mathTeacher; @ExcelCollection(name = "學生", orderNum = "4") private Liststudents;
一個課程對應了一個老師的實體
@ExcelEntity(id = "absent") private TeacherEntity mathTeacher; @ExcelTarget("teacherEntity") public class TeacherEntity implements java.io.Serializable { /** id */ //@Excel(name = "主講老師", orderNum = "2",isImportField = "true_major,true_absent") private String id; /** name */ @Excel(name = "主講老師_major,代課老師_absent", orderNum = "1",needMerge = true,isImportField = "true_major,true_absent") private String name;
算是我們常見的一對一的關系
然后一個課程有多個學生,就是一對多的關系
@ExcelCollection(name = "學生", orderNum = "4") private Liststudents; /** * 學生姓名 */ @Excel(name = "學生姓名", height = 20, width = 30, isImportField = "true_st") private String name; /** * 學生性別 */ @Excel(name = "學生性別", replace = { "男_1", "女_2" }, suffix = "生", isImportField = "true_st") private int sex; @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd", isImportField = "true_st", width = 20) private Date birthday; @Excel(name = "進校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd") private Date registrationDate;
這樣我們就定義了一個包含一堆一和一堆多的一個實體,可能導出中沒有這么復雜,跟多的是一個對象就搞定了
只需要個@Excel注解機可以
現在我們定義好對象了,如何導出Excel --ExcelExportUtil 這個導出工具類
public void testExportExcel_1() throws Exception { ExportParams params = new ExportParams("0328課程表", "日期:2016-03-28", "六年一班"); Workbook workbook = ExcelExportUtil.exportExcel(params, CourseEntity.class,courseList); FileOutputStream fos = new FileOutputStream("D:/excel/0328課程表.xls"); workbook.write(fos); fos.close(); }
我們只要把我們定義好的對象的class傳進去,以及對象的集合,Easypoi就可以返回一個Excel的workbook了,同時Easypoi是兼容03版本office和07版本office,你要穿個參數指定下類型及可以了,是不是不是比我們自己寫代碼簡單多了,最少只需要2行代碼就可以完成我們的office操作了導入
我們把導出寫完了,導入是不是很復雜呢,也不是,導入也是同樣簡單,定時實體和上面定義的方式一樣
導入是用導入工具類
ImportParams params = new ImportParams(); params.setHeadRows(2); Listlist = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);
定義下表頭的參數,然后把流傳入進去就可以得到我們的對象列表是不是so easy.趕快來使用吧
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70468.html
摘要:一行代碼完成對象和之間的轉換。說明屬性列名稱四版本更新日志版本,新特性導出支持對象裝換為,并且支持字節數組等多種導出方式導入支持轉換為對象,并且支持文件路徑等多種導入方式版本,新特性字段支持類型。 《Java對象和Excel轉換工具XXL-EXCEL》 showImg(https://segmentfault.com/img/remote/1460000012470335);showI...
摘要:新特性支持設置水平位置,如居中居左底層優化,預約多操作支持空導入拋錯問題修復數據類型識別優化,全類型支持導入時支持空導出時限制非空,否則無法進行類型推導。概述是一個靈活的對象和文檔相互轉換的工具。一行代碼完成對象和之間的轉換。 v1.1.1 新特性 1、支持設置Field水平位置,如居中、居左; 2、底層API優化,預約多Sheet操作支持; 3、空Cell導入拋錯問題修復; 4、C...
摘要:需要的技術框架利用其上傳下載功能解析技術定制導入模板制作前臺與格式對應,版本低,兼容性好與格式對應組成的幾個概念工作薄工作表行記錄單元格創建中的的詳見如創建創建工作簿創建工作表創建第一行創建一個文件存盤名字性別男解析文件創建,讀取文件 需要的技術 1、strut2框架 利用其上傳下載功能2、xml解析技術 定制導入模板3、jquery UI 制作前臺 4、showImg(/i...
摘要:在上一篇文章中,我們學習了在中支持綁定的屬性,今天我們來介紹在中支持哪些事件。詳細的事件說明,請參考博客。版本即將發布,更多更好的功能盡在新版本中,敬請期待登錄官網,了解更多。 showImg(https://segmentfault.com/img/bVP1Wc?w=900&h=500);SpreadJS 純前端表格控件是基于 HTML5 的 JavaScript 電子表格和網格功能...
摘要:封裝了讓我們能夠非常簡單的實現導出模板導出導入模板導出等,具體可見官網我這邊實現了一個的導出,記錄一下。 easypoi封裝了poi讓我們能夠非常簡單的實現Excel導出,Excel模板導出,Excel導入,Word模板導出等,具體可見官網:http://www.afterturn.cn/ 我這邊實現了一個excel的導出,記錄一下。 1、pom文件引入starter cn....
閱讀 2694·2023-04-25 17:58
閱讀 2978·2021-11-15 11:38
閱讀 2378·2021-11-02 14:48
閱讀 1184·2021-08-25 09:40
閱讀 1823·2019-08-30 15:53
閱讀 1093·2019-08-30 15:52
閱讀 1031·2019-08-30 13:55
閱讀 2436·2019-08-29 15:21