分享

EasyExcel 读写&多sheet操作

 hncdman 2023-06-05 发布于湖南

EasyExcel是一款Java操作Excel的开源库,使用它可以方便地读取、写入和操作Excel文件。下面是使用EasyExcel的基本步骤:

引入EasyExcel依赖

在Maven项目中,可以在pom.xml文件中添加以下依赖:

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

一. 写入Excel文件

使用EasyExcel写入Excel文件的步骤如下:

(1)定义Excel表头

public class DemoData {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年龄")
    private Integer age;

    // 省略getter/setter方法}

(2)创建ExcelWriter对象

String fileName = "demo.xlsx";// 可以自定义表格样式ExcelWriter excelWriter = EasyExcel.write(fileName).registerWriteHandler(ExcelStyleUtil.defaultStyle()).build();

(3)写入数据

List<DemoData> dataList = new ArrayList<>();// 多sheet操作excelWriter.write(dataList, EasyExcel.writerSheet(0, "Sheet1").head(DemoData.class).build());excelWriter.write(dataList, EasyExcel.writerSheet(1, "Sheet2").head(DemoData.class).build());

(4)关闭ExcelWriter对象

excelWriter.finish();

(5)Excel样式定义

import com.alibaba.excel.write.metadata.style.WriteCellStyle;import com.alibaba.excel.write.metadata.style.WriteFont;import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;import org.apache.poi.ss.usermodel.BorderStyle;import org.apache.poi.ss.usermodel.FillPatternType;import org.apache.poi.ss.usermodel.HorizontalAlignment;import org.apache.poi.ss.usermodel.IndexedColors;public class ExcelStyleUtil {
    private ExcelStyleUtil(){}

    public static HorizontalCellStyleStrategy defaultStyle() {
        // 头的策略
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontHeightInPoints((short)10);
        headWriteFont.setFontName("Arial");
        headWriteFont.setBold(true);

        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        headWriteCellStyle.setWriteFont(headWriteFont);
        headWriteCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
        headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
        headWriteCellStyle.setBorderBottom(BorderStyle.THIN);
        headWriteCellStyle.setBorderLeft(BorderStyle.THIN);
        headWriteCellStyle.setBorderRight(BorderStyle.THIN);
        headWriteCellStyle.setBorderTop(BorderStyle.THIN);
        headWriteCellStyle.setWrapped(false);
        headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);

        // 内容的策略
        WriteFont contentWriteFont = new WriteFont();
        contentWriteFont.setFontHeightInPoints((short)10);
        contentWriteFont.setFontName("Arial");
        contentWriteFont.setBold(false);

        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        contentWriteCellStyle.setWriteFont(contentWriteFont);

        // 其他的策略可以自己实现
        HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
        return horizontalCellStyleStrategy;
    }}

二. 读取Excel文件

使用EasyExcel读取Excel文件的步骤如下:

(1)定义Excel表头

public class DemoData {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年龄")
    private Integer age;

    // 省略getter/setter方法}

(2)创建ExcelReader对象

String fileName = "demo.xlsx";ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).build();

(3)注册数据监听器

public class DemoDataListener extends AnalysisEventListener<DemoData> {
    private List<DemoData> dataList = new ArrayList<>();

    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        dataList.add(data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 处理完所有数据后的操作
    }

    public List<DemoData> getDataList() {
        return dataList;
    }}

(4)读取数据

DemoDataListener listener = new DemoDataListener();excelReader.read(EasyExcel.readSheet(0).build(), listener);List<DemoData> dataList = listener.getDataList();

(5)关闭ExcelReader对象

excelReader.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约