EasyExcel調試記錄


一.pom.xml

<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.6</version>
</dependency>


二.必須要finish才會寫入,不finish只會創建empty的文件。

WriteSheet writeSheet = EasyExcel.writerSheet("測試1").head(list).build();
        excelWriter.write(data, writeSheet);
        //必須要finish才會寫入,不finish只會創建一個empty的文件。
        excelWriter.finish();


三.template和file不能是通一個,file會將template文件清掉。

//以下寫法是錯誤的
ExcelWriter excelWriter2 = EasyExcel.write().withTemplate(filePath1st).file(filePath1st).autoCloseStream(true).build();


四.一個ExcelWriter能夠寫多個Sheet。

        //第一次寫入
        ExcelWriter excelWriter = EasyExcel.write().file(filePath1st).autoCloseStream(true).build();
        WriteSheet writeSheet = EasyExcel.writerSheet("測試1").head(list).build();
        excelWriter.write(data, writeSheet);
        //第二次寫入
        WriteSheet writeSheet2 = EasyExcel.writerSheet("測試2").head(list).build();
        excelWriter.write(data, writeSheet2);
       //必須要finish才會寫入,不finish只會創建一個empty的文件。
        excelWriter.finish();


五.不支持多線程寫

        //初始化 ExcelWriter
        ExcelWriter excelWriter = EasyExcel.write().file(filePath1st).build();
        
        for(int j=0;j<=9;j++)
        {
            WriteSheet writeSheet =  EasyExcel.writerSheet(j,"測試"+j).head(list).build();
            new Thread(new WriteSheetThread(excelWriter,writeSheet,data)).start();
        }

        excelWriter.finish();

如上寫法是錯誤的,無法正確運行。

線程類代碼如下

static class WriteSheetThread implements Runnable{
        private ExcelWriter excelWriter;
        private WriteSheet writeSheet;
        private List<List<Object>> data;

        public WriteSheetThread(ExcelWriter excelWriter, WriteSheet writeSheet, List<List<Object>> data) {
            this.excelWriter = excelWriter;
            this.writeSheet = writeSheet;
            this.data = data;
        }
        @Override
        public void run() {
            writeExcel();
        }
        private void writeExcel(){
            System.out.println(writeSheet);
            excelWriter.write(data, writeSheet);
        }
    }


六.正確寫多個sheet的方式

        //初始化 ExcelWriter
        ExcelWriter excelWriter = EasyExcel.write().file(filePath1st).build();
        //正確流程,在單線程中依次寫多個文件。
        for(int j=0;j<=9;j++)
        {
            WriteSheet writeSheet =  EasyExcel.writerSheet(j,"測試"+j).head(list).build();
            excelWriter.write(data, writeSheet);
        }
        excelWriter.finish();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM