alibaba/easyexcel

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

Open

#3,888 opened on 2024年7月17日

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
 (30d に merged PR はありません)

説明

涉及代码:

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

コントリビューターガイド