Open chendaoheng opened 1 year ago
// 导入 EasyExcel 相关的包 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
public class MultiLanguageExcelGenerator {
public static void main(String[] args) {
String templateFilePath = "模板.xlsx"; // 模板文件路径
String outputFilePath = "生成的多语言文件.xlsx"; // 生成的多语言文件路径
// 读取模板文件
ExcelWriterBuilder writerBuilder = EasyExcel.write(outputFilePath);
ExcelWriterSheetBuilder sheetBuilder = writerBuilder.sheet();
ExcelWriter excelWriter = sheetBuilder.withTemplate(templateFilePath).build();
// 添加中文 sheet
String chineseSheetName = "中文";
excelWriter.fill(new FillData(chineseSheetName));
// 添加英文 sheet
String englishSheetName = "英文";
excelWriter.fill(new FillData(englishSheetName));
// 关闭 ExcelWriter
excelWriter.finish();
}
// 自定义 FillData 类,用于填充每个 sheet 的数据
public static class FillData implements WriteHandler {
private String sheetName;
public FillData(String sheetName) {
this.sheetName = sheetName;
}
@Override
public void beforeSheetCreate(String sheetName, int sheetIndex) {
if (this.sheetName.equals(sheetName)) {
// 在这里可以做一些初始化操作
}
}
@Override
public void afterSheetCreate(String sheetName, int sheetIndex) {
if (this.sheetName.equals(sheetName)) {
// 在这里可以做一些后续操作
}
}
}
}
背景
最近开发一个多语言业务功能,要实现很多个语言版本的sheet,想着从模板中生成sheet,ps:模板中很多个sheet,一个语言一个。这样我就不用创建很多个excel文件模板了,一个模板多个sheet就行。这样结构清晰也便于维护。
期望
模板.xlsx--->中文sheet,英文sheet--->WriteSheet writeSheet= EasyExcel.writerSheet(sheetName). .withTemplateSheet(template,templateSheetName).build();
template=已读取的模板,这样不用重复请求资源