欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用EasyExcel操作Excel有多方便

這篇文章主要介紹“使用EasyExcel操作Excel有多方便”,在日常操作中,相信很多人在使用EasyExcel操作Excel有多方便問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”使用EasyExcel操作Excel有多方便”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

10年積累的網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有康保免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一丶Excel導(dǎo)入導(dǎo)出的應(yīng)用場(chǎng)景
  1.     數(shù)據(jù)導(dǎo)入:減輕錄入工作量

  2.     數(shù)據(jù)導(dǎo)出:統(tǒng)計(jì)信息歸檔

  3.     數(shù)據(jù)傳輸: 異構(gòu)系統(tǒng)之間數(shù)據(jù)傳輸

二丶EasyExcel簡(jiǎn)介
  • Java領(lǐng)域解析、生成Excel比較有名的框架有Apache Poi 、jxl等。但他們都存在一個(gè)嚴(yán)重的問(wèn)題就是非常的耗內(nèi)存。如果你的系統(tǒng)并發(fā)量不大的話可能還行,但是一旦并發(fā)上來(lái)后會(huì)oom或者jvm頻繁的fullgc。

  • EasyExcel是阿里巴巴開(kāi)源的一個(gè)excel處理框架,以使用簡(jiǎn)單、節(jié)省內(nèi)存著稱。EasyEacel能大大減少占用內(nèi)存的主要原因是在解析Excel時(shí)沒(méi)有將文件數(shù)據(jù)一次性全部加載到內(nèi)存中,而是從磁盤上一行行讀取數(shù)據(jù),逐個(gè)解析。

  • EasyExcel采用一行一行的解析模式,并將一行的解析結(jié)果以觀察者的模式通知處理(AnakysisEventListener)。

三、實(shí)現(xiàn)EasyExcel對(duì)Excel讀操作

    1.創(chuàng)建實(shí)體類

import com.alibaba.excel.annotation.ExcelProperty;
public class ReadData {
    //設(shè)置列對(duì)應(yīng)的屬性
    @ExcelProperty(index = 0)
    private int sid;
    
    //設(shè)置列對(duì)應(yīng)的屬性
    @ExcelProperty(index = 1)
    private String sname;

    public int getSid() {
        return sid;
    }
    public void setSid(int sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    @Override
    public String toString() {
        return "ReadData{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                '}';
    }
}

    2、創(chuàng)建讀取操作的監(jiān)聽(tīng)器

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

//創(chuàng)建讀取excel監(jiān)聽(tīng)器
public class ExcelListener extends AnalysisEventListener<ReadData> {

    //創(chuàng)建list集合封裝最終的數(shù)據(jù)
    List<ReadData> list = new ArrayList<ReadData>();

    //一行一行去讀取excle內(nèi)容
    @Override
    public void invoke(ReadData user, AnalysisContext analysisContext) {
       System.out.println("***"+user);
        list.add(user);
    }

    //讀取excel表頭信息
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表頭信息:"+headMap);
    }

    //讀取完成后執(zhí)行
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    }
}

    3、調(diào)用實(shí)現(xiàn)最終的讀取

public static void main(String[] args) throws Exception {

        // 寫法1:
        String fileName = "F:\\01.xlsx";
        // 這里 需要指定讀用哪個(gè)class去讀,然后讀取第一個(gè)sheet 文件流會(huì)自動(dòng)關(guān)閉
        EasyExcel.read(fileName, ReadData.class, new ExcelListener()).sheet().doRead();

        // 寫法2:
        InputStream in = new BufferedInputStream(new FileInputStream("F:\\01.xlsx"));
        ExcelReader excelReader = EasyExcel.read(in, ReadData.class, new ExcelListener()).build();
        ReadSheet readSheet = EasyExcel.readSheet(0).build();
        excelReader.read(readSheet);
        // 這里千萬(wàn)別忘記關(guān)閉,讀的時(shí)候會(huì)創(chuàng)建臨時(shí)文件,到時(shí)磁盤會(huì)崩的
        excelReader.finish();
}
四、實(shí)現(xiàn)EasyExcel對(duì)Excel寫操作

    1.創(chuàng)建實(shí)體類,設(shè)置表頭和添加的數(shù)據(jù)字段

//設(shè)置表頭和添加的數(shù)據(jù)字段
public class DemoData {
    //設(shè)置表頭名稱
    @ExcelProperty("學(xué)生編號(hào)")
    private int sno;
    
	//設(shè)置表頭名稱
    @ExcelProperty("學(xué)生姓名")
    private String sname;

    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    @Override
    public String toString() {
        return "DemoData{" +
                "sno=" + sno +
                ", sname='" + sname + '\'' +
                '}';
    }
}

    2.創(chuàng)建方法循環(huán)設(shè)置要添加到Excel的數(shù)據(jù)

//循環(huán)設(shè)置要添加的數(shù)據(jù),最終封裝到list集合中
private static List<DemoData> data() {
    List<DemoData> list = new ArrayList<DemoData>();
    for (int i = 0; i < 10; i++) {
        DemoData data = new DemoData();
        data.setSno(i);
        data.setSname("張三"+i);
        list.add(data);
    }
    return list;
}

    3.實(shí)現(xiàn)最終的添加操作(寫法一)

public static void main(String[] args) throws Exception {
    // 寫法1
    String fileName = "F:\\11.xlsx";
    // 這里 需要指定寫用哪個(gè)class去寫,然后寫到第一個(gè)sheet,名字為模板 然后文件流會(huì)自動(dòng)關(guān)閉
    // 如果這里想使用03 則 傳入excelType參數(shù)即可
    EasyExcel.write(fileName, DemoData.class).sheet("寫入方法一").doWrite(data());
}

    (寫法二)

public static void main(String[] args) throws Exception {
    // 寫法2,方法二需要手動(dòng)關(guān)閉流
    String fileName = "F:\\112.xlsx";
    // 這里 需要指定寫用哪個(gè)class去寫
    ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();
    WriteSheet writeSheet = EasyExcel.writerSheet("寫入方法二").build();
    excelWriter.write(data(), writeSheet);
    /// 千萬(wàn)別忘記finish 會(huì)幫忙關(guān)閉流
    excelWriter.finish();
}

到此,關(guān)于“使用EasyExcel操作Excel有多方便”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

分享文章:使用EasyExcel操作Excel有多方便
URL地址:http://chinadenli.net/article34/gsjise.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站營(yíng)銷型網(wǎng)站建設(shè)企業(yè)建站網(wǎng)站設(shè)計(jì)軟件開(kāi)發(fā)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名