【easyexcel】生成excel文件


目錄

1、將List<List<String>>中的內容生成到excel表格中,無表頭

2、將List<List<String>>中的內容生成到excel表格中,有表頭

3、將List<Object>的內容生成到表格中

 

引入Maven依賴

 <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>easyexcel</artifactId>
      <version>1.1.2-beta5</version>
 </dependency>

 

1、將List<List<String>>中的內容生成到excel表格中,無表頭

 

package com.harara.easyexcel.write;

import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;import com.alibaba.excel.support.ExcelTypeEnum;import java.io.FileOutputStream;import java.io.OutputStream;
import java.util.ArrayList;import java.util.List;

/**
 *
 * 通過List、Object生成excel
 * @author : harara
 * @version : 2.0
 * @date : 2020/6/9 13:49
 */
public class ExcelWriteTest {

    /**
     * 每行數據是List<String>
     *     無表頭
     */
    public void writeWithoutHead(){
        List<List<String>> data = getExcelData();
        OutputStream out;
        ExcelWriter excelWriter;
        try {
             out = new FileOutputStream("withoutHead.xlsx");
             excelWriter = new ExcelWriter(out, ExcelTypeEnum.XLSX,false);
             Sheet sheet1 = new Sheet(1,0);
             sheet1.setSheetName("sheet1");
             excelWriter.write0(data,sheet1);
             excelWriter.finish();
             out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }



    public static void main(String[] args) {
        ExcelWriteTest excelWriteTest = new ExcelWriteTest();
        excelWriteTest.writeWithoutHead();
        System.out.println("finish");
    }


    private List<List<String>>  getExcelData(){
        List<List<String>> data = new ArrayList<List<String>>();
        for(int i=0;i<=10;i++){
            List<String> line = new ArrayList<String>();
            line.add("第"+i+"行,第1列內容");
            line.add("第"+i+"行,第2列內容");
            line.add("第"+i+"行,第3列內容");
            data.add(line);
        }
        return data;
    }

 
}

生成效果

 

2、將List<List<String>>的內容生成到excel表格中,有表頭

package com.harara.easyexcel.write;

import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.metadata.Table;
import com.alibaba.excel.support.ExcelTypeEnum;import java.io.FileOutputStream;import java.io.OutputStream;
import java.util.ArrayList;import java.util.List;

/**
 *
 * 通過List、Object生成excel
 * @author : harara
 * @version : 2.0
 * @date : 2020/6/9 13:49
 */
public class ExcelWriteTest {

 

    /**
     * 每行數據是List<String>
     *     有表頭
     */
    public void writeWithHead(){
        List<List<String>> data = getExcelData();
        List<List<String>> head = getExcelHead();
        OutputStream out;
        ExcelWriter excelWriter;
        try{
           out = new FileOutputStream("withHead.xlsx");
           excelWriter = new ExcelWriter(out, ExcelTypeEnum.XLSX,true);
            Table table = new Table(0);
            table.setHead(head);
           excelWriter.write0(data,new Sheet(0),table);
           excelWriter.finish();
           out.flush();
        }catch (Exception e){
            e.printStackTrace();
        }
    }


    public static void main(String[] args) {
        ExcelWriteTest excelWriteTest = new ExcelWriteTest();
        excelWriteTest.writeWithHead();
        System.out.println("finish");
    }


    private  List<List<String>> getExcelHead(){
        List<List<String>> head = new ArrayList<List<String>>();
        List<String> column1 = new ArrayList<String>();
        column1.add("第一列");
        List<String> column2 = new ArrayList<String>();
        column2.add("第二列");
        List<String> column3 = new ArrayList<String>();
        column3.add("第三列");

        head.add(column1);
        head.add(column2);
        head.add(column3);
        return head;
    }


    private List<List<String>>  getExcelData(){
        List<List<String>> data = new ArrayList<List<String>>();
        for(int i=0;i<=10;i++){
            List<String> line = new ArrayList<String>();
            line.add("第"+i+"行,第1列內容");
            line.add("第"+i+"行,第2列內容");
            line.add("第"+i+"行,第3列內容");
            data.add(line);
        }
        return data;
    }

   
}

生成效果

 

3、將List<Object>的內容生成到表格中

package com.harara.easyexcel.write;

import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;import com.alibaba.excel.support.ExcelTypeEnum;
import com.harara.model.User;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * 通過List、Object生成excel
 * @author : harara
 * @version : 2.0
 * @date : 2020/6/9 13:49
 */
public class ExcelWriteTest {


    /**
     * 每行數據是Object
     */
    public void writeExcelByModel(){
        List<User> users = getExcelModelData();
        OutputStream outputStream = null;
        ExcelWriter excelWriter;
        try{
            outputStream = new FileOutputStream("excelByModel.xlsx");
            excelWriter = new ExcelWriter(outputStream,ExcelTypeEnum.XLSX,true);
            //sheet構造函數中指定實體對象為User.class
            Sheet sheet = new Sheet(1,0, users.get(0).getClass());
            excelWriter.write(users,sheet);
            excelWriter.finish();
            outputStream.flush();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(outputStream != null){
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


    public static void main(String[] args) {
        ExcelWriteTest excelWriteTest = new ExcelWriteTest();
        excelWriteTest.writeExcelByModel();
        System.out.println("finish");
    }
 
    /**
     * 獲取實體對象數據
     * @return
     */
    private List<User> getExcelModelData(){
        List<User> users = new ArrayList<User>();
        for(int i=0; i <= 10;i++){
            User user = new User();
            user.setName("name" + i);
            user.setAge("age" + i);
            user.setEmail("email" + i);
            user.setAddress("address" + i);
            user.setSax("sax" + i);
            user.setHeigh("heigh" + i);
            user.setLast("last" + i);
            user.setBitthday(new Date());
            users.add(user);
        }
        return users;
    }
}

實體對象

繼承BaseRowModel,字段上添加@ExcelProperty注解表示該字段要寫入到excel中,屬性value表示表頭名,index表示列的順序排序

package com.harara.model;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import lombok.Data;

import java.util.Date;

/**
 * 要繼承BaseRowModel
 * @author : harara
 * @version : 2.0
 * @date : 2020/6/9 15:32
 * 
 */
@Data
public class User extends BaseRowModel{

    @ExcelProperty(value = "姓名", index = 0)
    private String name;

    @ExcelProperty(value = "年齡", index = 1)
    private String age;

    @ExcelProperty(value = "郵箱", index = 2)
    private String email;

    @ExcelProperty(value = "地址", index = 3)
    private String address;

    @ExcelProperty(value = "性別", index = 4)
    private String sax;

    @ExcelProperty(value = "高度", index = 5)
    private String heigh;

    @ExcelProperty(value = "備注", index = 6)
    private String last;

    @ExcelProperty(value = "生日",index = 7)
    private Date bitthday;

}

生成效果

 

 

參考地址

alibaba/easyexcel 框架使用  https://www.jianshu.com/p/3a64ade57bf2

JAVA使用easyexcel操作Excel https://blog.csdn.net/jianggujin/article/details/80200400


免責聲明!

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



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