成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何用java完成Excel快速的導(dǎo)入導(dǎo)出

zhichangterry / 2630人閱讀

摘要:日常工作中是我們經(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 List students;

一個(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 List students;
    
     /**
     * 學(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ī)可以

導(dǎo)出

現(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);
        List list = 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

相關(guān)文章

  • Java對(duì)象和Excel轉(zhuǎn)換工具XXL-EXCEL

    摘要:一行代碼完成對(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...

    mj 評(píng)論0 收藏0
  • XXL-EXCEL v1.1.1 發(fā)布,Java對(duì)象和Excel轉(zhuǎn)換工具

    摘要:新特性支持設(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...

    劉玉平 評(píng)論0 收藏0
  • Java實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出學(xué)習(xí)筆記1 - 實(shí)現(xiàn)方式

    摘要:需要的技術(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...

    wean 評(píng)論0 收藏0
  • SpreadJS 在 Angular2 中支持哪些事件?

    摘要:在上一篇文章中,我們學(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)格功能...

    姘擱『 評(píng)論0 收藏0
  • spring boot + easypoi快速實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    摘要:封裝了讓我們能夠非常簡(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....

    summerpxy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<