摘要:日常工作中是我們經(jīng)常需要處理的文件報(bào)表的生成數(shù)據(jù)的導(dǎo)出幾乎每個(gè)項(xiàng)目都需要寫(xiě)對(duì)應(yīng)的處理作者也是編寫(xiě)這塊代碼大軍的一員能否有方法讓我們不用重復(fù)編寫(xiě)代碼呢能否只要簡(jiǎn)單配置就可以完成我們的生成呢作者分析了和對(duì)象的關(guān)系發(fā)現(xiàn)就是我們的一個(gè)對(duì)象是我們的一
日常工作中,Excel是我們經(jīng)常需要處理的文件,報(bào)表的生成,數(shù)據(jù)的導(dǎo)出,幾乎每個(gè)項(xiàng)目都需要寫(xiě)對(duì)應(yīng)的處理.作者也是編寫(xiě)這塊代碼大軍的一員,能否有方法讓我們不用重復(fù)編寫(xiě)代碼呢,能否只要簡(jiǎn)單配置就可以完成我們的Excel生成呢,
作者分析了Excel和對(duì)象的關(guān)系,發(fā)現(xiàn)Row就是我們的一個(gè)對(duì)象cell是我們的一個(gè)屬性,從而開(kāi)發(fā)了Easypoi,
下面講解下用Excel 如何幾乎不寫(xiě)代碼的完成導(dǎo)入導(dǎo)出
首先是我們以一個(gè)對(duì)象,拿最簡(jiǎn)單的學(xué)生和老師的對(duì)象來(lái)舉例子,講解下常見(jiàn)的對(duì)象關(guān)聯(lián)關(guān)系,Easypoi是如何處理的
首先是課程,這個(gè)是,我們的導(dǎo)出主要對(duì)象
@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 = "學(xué)生", orderNum = "4") private Liststudents;
一個(gè)課程對(duì)應(yīng)了一個(gè)老師的實(shí)體
@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;
算是我們常見(jiàn)的一對(duì)一的關(guān)系
然后一個(gè)課程有多個(gè)學(xué)生,就是一對(duì)多的關(guān)系
@ExcelCollection(name = "學(xué)生", orderNum = "4") private Liststudents; /** * 學(xué)生姓名 */ @Excel(name = "學(xué)生姓名", height = 20, width = 30, isImportField = "true_st") private String name; /** * 學(xué)生性別 */ @Excel(name = "學(xué)生性別", 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 = "進(jìn)校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd") private Date registrationDate;
這樣我們就定義了一個(gè)包含一堆一和一堆多的一個(gè)實(shí)體,可能導(dǎo)出中沒(méi)有這么復(fù)雜,跟多的是一個(gè)對(duì)象就搞定了
只需要個(gè)@Excel注解機(jī)可以
現(xiàn)在我們定義好對(duì)象了,如何導(dǎo)出Excel --ExcelExportUtil 這個(gè)導(dǎo)出工具類
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(); }
我們只要把我們定義好的對(duì)象的class傳進(jìn)去,以及對(duì)象的集合,Easypoi就可以返回一個(gè)Excel的workbook了,同時(shí)Easypoi是兼容03版本office和07版本office,你要穿個(gè)參數(shù)指定下類型及可以了,是不是不是比我們自己寫(xiě)代碼簡(jiǎn)單多了,最少只需要2行代碼就可以完成我們的office操作了導(dǎo)入
我們把導(dǎo)出寫(xiě)完了,導(dǎo)入是不是很復(fù)雜呢,也不是,導(dǎo)入也是同樣簡(jiǎn)單,定時(shí)實(shí)體和上面定義的方式一樣
導(dǎo)入是用導(dǎo)入工具類
ImportParams params = new ImportParams(); params.setHeadRows(2); Listlist = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);
定義下表頭的參數(shù),然后把流傳入進(jìn)去就可以得到我們的對(duì)象列表是不是so easy.趕快來(lái)使用吧
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70468.html
摘要:一行代碼完成對(duì)象和之間的轉(zhuǎn)換。說(shuō)明屬性列名稱四版本更新日志版本,新特性導(dǎo)出支持對(duì)象裝換為,并且支持字節(jié)數(shù)組等多種導(dǎo)出方式導(dǎo)入支持轉(zhuǎn)換為對(duì)象,并且支持文件路徑等多種導(dǎo)入方式版本,新特性字段支持類型。 《Java對(duì)象和Excel轉(zhuǎn)換工具XXL-EXCEL》 showImg(https://segmentfault.com/img/remote/1460000012470335);showI...
摘要:新特性支持設(shè)置水平位置,如居中居左底層優(yōu)化,預(yù)約多操作支持空導(dǎo)入拋錯(cuò)問(wèn)題修復(fù)數(shù)據(jù)類型識(shí)別優(yōu)化,全類型支持導(dǎo)入時(shí)支持空導(dǎo)出時(shí)限制非空,否則無(wú)法進(jìn)行類型推導(dǎo)。概述是一個(gè)靈活的對(duì)象和文檔相互轉(zhuǎn)換的工具。一行代碼完成對(duì)象和之間的轉(zhuǎn)換。 v1.1.1 新特性 1、支持設(shè)置Field水平位置,如居中、居左; 2、底層API優(yōu)化,預(yù)約多Sheet操作支持; 3、空Cell導(dǎo)入拋錯(cuò)問(wèn)題修復(fù); 4、C...
摘要:需要的技術(shù)框架利用其上傳下載功能解析技術(shù)定制導(dǎo)入模板制作前臺(tái)與格式對(duì)應(yīng),版本低,兼容性好與格式對(duì)應(yīng)組成的幾個(gè)概念工作薄工作表行記錄單元格創(chuàng)建中的的詳見(jiàn)如創(chuàng)建創(chuàng)建工作簿創(chuàng)建工作表創(chuàng)建第一行創(chuàng)建一個(gè)文件存盤名字性別男解析文件創(chuàng)建,讀取文件 需要的技術(shù) 1、strut2框架 利用其上傳下載功能2、xml解析技術(shù) 定制導(dǎo)入模板3、jquery UI 制作前臺(tái) 4、showImg(/i...
摘要:在上一篇文章中,我們學(xué)習(xí)了在中支持綁定的屬性,今天我們來(lái)介紹在中支持哪些事件。詳細(xì)的事件說(shuō)明,請(qǐng)參考博客。版本即將發(fā)布,更多更好的功能盡在新版本中,敬請(qǐng)期待登錄官網(wǎng),了解更多。 showImg(https://segmentfault.com/img/bVP1Wc?w=900&h=500);SpreadJS 純前端表格控件是基于 HTML5 的 JavaScript 電子表格和網(wǎng)格功能...
摘要:封裝了讓我們能夠非常簡(jiǎn)單的實(shí)現(xiàn)導(dǎo)出模板導(dǎo)出導(dǎo)入模板導(dǎo)出等,具體可見(jiàn)官網(wǎng)我這邊實(shí)現(xiàn)了一個(gè)的導(dǎo)出,記錄一下。 easypoi封裝了poi讓我們能夠非常簡(jiǎn)單的實(shí)現(xiàn)Excel導(dǎo)出,Excel模板導(dǎo)出,Excel導(dǎo)入,Word模板導(dǎo)出等,具體可見(jiàn)官網(wǎng):http://www.afterturn.cn/ 我這邊實(shí)現(xiàn)了一個(gè)excel的導(dǎo)出,記錄一下。 1、pom文件引入starter cn....
閱讀 2716·2023-04-25 17:58
閱讀 2990·2021-11-15 11:38
閱讀 2390·2021-11-02 14:48
閱讀 1200·2021-08-25 09:40
閱讀 1831·2019-08-30 15:53
閱讀 1105·2019-08-30 15:52
閱讀 1042·2019-08-30 13:55
閱讀 2445·2019-08-29 15:21