涉及代码:
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
导出后现象见下图
8条答案
按热度按时间ruoxqz4g1#
Hi,麻烦一下对应的模板
twh00eeo2#
表单信息.xlsx
@psxjoy
hm2xizp93#
在excel中,保留两位小数和千分位是两个连续的步骤,没办法拆分处理。(你可以理解为Excel严格遵守规定,每一个步骤都要在上一个步骤的流程下实施。WPS自己做了自动化操作)
如果你要求千分位+保留两位小数,你可以按照以下设置:
vojdkbi04#
我用的不是WPS,这个导出之后,点击千分位那个按钮,就会把格式清除掉,其他列也会有这个问题
sqserrrh5#
你自己新建一个excel,单独点击按钮,也会清除格式。和easyexcel的使用无关 获取 Outlook for iOS< https://aka.ms/o0ukef >…
________________________________ 发件人: zlsfaith ***@***.***> 发送时间: Wednesday, July 17, 2024 12:04:04 PM 收件人: alibaba/easyexcel ***@***.***> 抄送: Black Pan ***@***.***>; Assign ***@***.***> 主题: Re: [alibaba/easyexcel] 根据模板生成的Excel,在点击“千位分隔样式”后,单元格格式会被清除 (Issue #3888) 我用的不是WPS,这个导出之后,点击千分位那个按钮,就会把格式清除掉,其他列也会有这个问题 ― Reply to this email directly, view it on GitHub<#3888 (comment)>, or unsubscribe< https://github.com/notifications/unsubscribe-auth/ACRXFDTW65UOVBKBN47F7XDZMXULJAVCNFSM6AAAAABK7T46XSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMZSGM2DEMRTGI >. You are receiving this because you were assigned.Message ID: ***@***.***>
c7rzv4ha6#
这个我试验过,自己新建的excel,点击之后,不会清除,之前用的poi导出也是正常的
yuvru6vn7#
尝试复现该问题,excel点击后,对应的数xml文件格式缺失。暂不确定问题原因,待排查。
ma8fv8wu8#
好的,希望能够早日破案