批量数据根据模板生成数据文件(EXCEL)

这样的文章很多,但是我还是依然写一个,希望能够帮助到部分朋友

依赖:

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>easyexcel</artifactId>
			<version>2.2.3</version>
		</dependency>

模板,我用的是E:\test\addSim003.xlsx:

首先需要一个数据实体:

package com.text;

import com.alibaba.excel.annotation.ExcelProperty;

/****************************************
 * @Description 请使用一句话描述
 * @Date 2024/1/30 11:23
 * @Author admin
 * @Version 0.0.0.0.0
 ****************************************/
public class DataDetail {
    @ExcelProperty(index = 0)
    private String imeiNumber;
    @ExcelProperty(index = 1)
    private String sv;
    @ExcelProperty(index = 2)
    private String clientType;
    @ExcelProperty(index = 3)
    private String deviceType;
    @ExcelProperty(index = 4)
    private String factoryName;
    @ExcelProperty(index = 5)
    private String useUnit;
    @ExcelProperty(index = 6)
    private String factoryDate;
    @ExcelProperty(index = 7)
    private String remark;

    public String getImeiNumber() {
        return imeiNumber;
    }

    public void setImeiNumber(String imeiNumber) {
        this.imeiNumber = imeiNumber;
    }

    public String getSv() {
        return sv;
    }

    public void setSv(String sv) {
        this.sv = sv;
    }

    public String getClientType() {
        return clientType;
    }

    public void setClientType(String clientType) {
        this.clientType = clientType;
    }

    public String getDeviceType() {
        return deviceType;
    }

    public void setDeviceType(String deviceType) {
        this.deviceType = deviceType;
    }

    public String getFactoryName() {
        return factoryName;
    }

    public void setFactoryName(String factoryName) {
        this.factoryName = factoryName;
    }

    public String getUseUnit() {
        return useUnit;
    }

    public void setUseUnit(String useUnit) {
        this.useUnit = useUnit;
    }

    public String getFactoryDate() {
        return factoryDate;
    }

    public void setFactoryDate(String factoryDate) {
        this.factoryDate = factoryDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

数据生成及全量代码:

package com.text;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/****************************************
 * @Description 请使用一句话描述
 * @Date 2024/1/30 9:48
 * @Author admin
 * @Version 0.0.0.0.0
 ****************************************/
public class MainTest {

    public static void main(String[] args) {
        List<DataDetail> dataList = new ArrayList<>();
        DataDetail d;
        for (int i = 0; i < 50000; i++) {
            d = new DataDetail();
            d.setImeiNumber("100010001" + StringUtils.leftPad(String.valueOf(i), 6, "0"));
            d.setFactoryDate("2024/1/2");
            d.setSv("21");
            d.setClientType("测试终端");
            d.setDeviceType("B类设备");
            d.setFactoryName("人民北路IMSI制造厂");
            d.setUseUnit("通号通信");
            d.setRemark(StringUtils.leftPad(String.valueOf(i), 6, "0"));
            dataList.add(d);
        }
        String templatePath = "E:\\test\\addSim003.xlsx";
        String outputPath = "E:\\test\\addSim004.xlsx";
        try {
            InputStream inputStream = new FileInputStream(templatePath);
            OutputStream outputStream = new FileOutputStream(outputPath);
            ExcelWriter ew = EasyExcel.write(outputStream).withTemplate(inputStream).build();
            WriteSheet ws = EasyExcel.writerSheet().build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
            ew.fill(dataList, fillConfig, ws);
            ew.finish();
            outputStream.flush();
            outputStream.close();
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最终生成文件,E:\test\addSim004.xlsx:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的`openpyxl`库实现批量Excel数据逐行按固定格式Excel模板生成单个Excel文件的功能。 大致思路如下: 1. 使用`openpyxl`库读取Excel模板文件。 2. 创建一个新的Excel文件,并根据模板文件中的格式设置表头和单元格样式。 3. 遍历Excel文件中的每一行数据。 4. 将Excel模板文件中的格式复制到新Excel文件中,并填充对应的数据。 5. 保存填充好数据Excel文件。 代码示例: ```python from openpyxl import Workbook, load_workbook from openpyxl.styles import Font, Alignment # 加载Excel模板文件 template_wb = load_workbook('template.xlsx') template_sheet = template_wb.active # 创建一个新的Excel文件 wb = Workbook() sheet = wb.active # 复制Excel模板文件的表头 for col_num, cell in enumerate(template_sheet[1], 1): sheet.cell(row=1, column=col_num, value=cell.value) sheet.cell(row=1, column=col_num).font = Font(bold=True) sheet.cell(row=1, column=col_num).alignment = Alignment(horizontal='center') # 复制Excel模板文件的单元格格式和数据 for row_num, row in enumerate(template_sheet.iter_rows(min_row=2), 2): for col_num, cell in enumerate(row, 1): sheet.cell(row=row_num, column=col_num).value = cell.value sheet.cell(row=row_num, column=col_num).font = cell.font sheet.cell(row=row_num, column=col_num).alignment = cell.alignment # 读取Excel中的数据 col1 = row[0].value col2 = row[1].value col3 = row[2].value # 填充Excel模板中的数据 sheet.cell(row=row_num, column=1, value=col1) sheet.cell(row=row_num, column=2, value=col2) sheet.cell(row=row_num, column=3, value=col3) # 保存生成Excel文件 wb.save('output.xlsx') ``` 以上代码将会按照Excel模板文件的格式复制一个新的Excel文件,并将Excel文件中每一行的数据填充到新Excel文件中对应的单元格位置。在Excel模板文件中需要设置好表头和单元格样式,用于复制到新Excel文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值