Java使用Easy Excel对Excel进行操作

发布于:2024-08-23 ⋅ 阅读:(48) ⋅ 点赞:(0)

Easy Excel使用教程API:

读Excel | Easy Excel 官网

使用代码示例:

需要自行创建一个Maven项目,然后pom文件中需要的依赖如下:

<dependencies>
        <!-- easyExcel 表格依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.3.2</version>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>4.12</scope>
        </dependency>
    </dependencies>

创建读写对象:

DemoData.java

package pojo;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class DemoData {

    @ExcelProperty("标题1")
    private String title1;
    @ExcelProperty("标题2")
    private String title2;
    @ExcelProperty("标题3")
    private String title3;
    @ExcelProperty("标题4")
    private String title4;

}

读文件:

准备好待读取的Excel文件

注意,表头字段名称需要与读写对象(DemoData.java)中的ExcelProperty属性值一致,否则会导致读不到数据。

读取文件的示例代码:

package read;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import org.junit.Test;
import pojo.DemoData;

public class SimpleRead {
    @Test
    public void simpleRead(){
        // 写法1:JDK8+ ,不用额外写一个DemoDataListener
        // since: 3.0.0-beta1
        String fileName = "C:\\Users\\11972\\Desktop\\test.xlsx";
        // 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
        // 具体需要返回多少行可以在`PageReadListener`的构造函数设置
        EasyExcel.read(fileName, DemoData.class, new PageReadListener<DemoData>(dataList -> {
            for (DemoData demoData : dataList) {
                System.out.println(demoData);
            }
        })).sheet().doRead();
    }
}

执行结果:

写文件:

将数据写入到Excel文件中,准备好一个空的Excel文件

将程序读取到的数据写入到Excel中:

package write;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.ListUtils;
import org.junit.Test;
import pojo.DemoData;
import java.util.List;

public class SimpleWrite {

    //产生模拟数据
    private List<DemoData> dataContent(int count) {
        List<DemoData> list = ListUtils.newArrayList();
        for (int i = 0; i < count; i++) {
            list.add(new DemoData(i+"a",i+"b",i+"c",i+"d"));
        }
        return list;
    }

    @Test
    public void write(){
        String fileName = "C:\\Users\\11972\\Desktop\\writeTesg.xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        EasyExcel.write(fileName, DemoData.class).sheet("写入数据").doWrite(dataContent(10));

    }
}

执行结果:

10条数据被写入到了Excel中。

根据模板填充文件:

如果想让写入到Excel中数据,按照自定义的格式去填充,那么就需要事先定义好一个模板文件,如下所示:

数据的表头为黄色,生成的数据为红色。

第二行中的标签代表要填充的字段,对应到读写对象(DemoData.java)时,字段和Excel中的列对应关系。格式为 {.字段名称}

示例代码:

package write;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.junit.Test;
import pojo.DemoData;

import java.util.List;

public class FillWrite {
    private List<DemoData> MockData(int count) {
        List<DemoData> list = ListUtils.newArrayList();
        for (int i = 0; i < count; i++) {
            list.add(new DemoData(i+"aa",i+"bb",i+"cc",i+"dd"));
        }
        return list;
    }

    @Test
    public void write(){
        // 模板文件地址
        String templateFileName = "C:\\Users\\11972\\Desktop\\template.xlsx";

        // 输出文件地址
        String fileName = "C:\\Users\\11972\\Desktop\\new.xlsx";

        try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            excelWriter.fill(MockData(20), writeSheet);
        }
    }
}

运行结果:

按照模板的格式,将数据进行了输出。

 


网站公告

今日签到

点亮在社区的每一天
去签到