怎么实现一个模版,进行边复制模版边填充数据,最后汇总到一个sheet
pieyvz9o1#
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import java.util.ArrayList; import java.util.List; import java.util.Map; public class TemplateDataFiller { public static void main(String[] args) { // 模板文件路径 String templateFileName = "template.xlsx"; // 新文件路径 String outputFileName = "output.xlsx"; // 读取模板文件中的数据 List<List<Object>> templateData = readTemplateData(templateFileName); // 创建一个新的工作簿 ExcelWriterBuilder writerBuilder = EasyExcel.write(outputFileName); ExcelWriter excelWriter = writerBuilder.build(); // 填充数据到新的工作簿中的Sheet fillDataToSheet(templateData, excelWriter); // 关闭ExcelWriter,保存文件 excelWriter.finish(); } // 读取模板文件中的数据 private static List<List<Object>> readTemplateData(String templateFileName) { // 这里可以根据需要使用EasyExcel读取模板文件的数据 // 返回一个List<List<Object>>,表示模板文件中的数据 // 这里简单地模拟一个模板数据 List<List<Object>> templateData = new ArrayList<>(); for (int i = 0; i < 10; i++) { List<Object> rowData = new ArrayList<>(); rowData.add("Column1 data"); rowData.add("Column2 data"); // 其他列数据... templateData.add(rowData); } return templateData; } // 填充数据到新的工作簿中的Sheet private static void fillDataToSheet(List<List<Object>> templateData, ExcelWriter excelWriter) { WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); FillWrapper fillWrapper = FillWrapper.builder().collection(templateData).build(); excelWriter.fill(fillWrapper, fillConfig, writeSheet); } }
1条答案
按热度按时间pieyvz9o1#