alibaba/easyexcel

根据模板生成的Excel,在点击“千位分隔样式”后,单元格格式会被清除

Open

#3,888 opened on Jul 17, 2024

View on GitHub
 (8 comments) (0 reactions) (2 assignees)Java (7,599 forks)batch import
help wantedpending verification

Repository metrics

Stars
 (33,728 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

涉及代码:

package com.example.javatest.Test;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.example.javatest.java.easyexcel.FillData;
import org.junit.Test;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ExcelTemplateTest {

    @Test
    public void simpleFill() {
        String templateFileName =
                "D:\\template\\表单信息.xlsx";
        String dest =
                "D:\\template\\表单信息dest.xlsx";
        List<FillData> fillDataList = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            FillData build = FillData.builder().level(i)
                    .billDate(new Date())
                    .billNo("billNO" + i * 24)
                    .fseq(i + "11")
                    .period("期间-" + i)
                    .voucher("凭证-" + i + 5)
                    .billName("单据名-" + (char) i)
                    .materialNo("no-" + i * 25)
                    .materialName("name-" + i * 62)
                    .hasChange(false)
                    .fqty(BigDecimal.valueOf(i * 303.3)).build();
            fillDataList.add(build);
        }
        ExcelWriter excelWriter = EasyExcel.write(dest)
                .withTemplate(templateFileName)
                .build();
        WriteSheet writeSheet = EasyExcel.writerSheet("表单信息").build();

        excelWriter.fill(fillDataList, writeSheet);
        excelWriter.finish();


    }
}

实体类:

package com.example.javatest.java.easyexcel;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.example.javatest.Test.BooleanToStringConvert;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.poi.ss.usermodel.IndexedColors;

import java.math.BigDecimal;
import java.util.Date;

@Data
@EqualsAndHashCode
@Builder
public class FillData {
    private Integer level;
    private Date billDate;
    private String billNo;
    private String fseq;
    private String period;
    private String voucher;
    private String billName;
    private String materialNo;
    private String materialName;
    @NumberFormat("0.00###############")
    private BigDecimal fqty;
    @ExcelProperty(converter = BooleanToStringConvert.class)
    private boolean hasChange;
    @ExcelIgnore
    private IndexedColors color;
}

pom 版本 com.alibaba easyexcel 3.3.4

导出后现象见下图 image image

Contributor guide