Word模板填充图片和普通值

/**
     * 上传word文档到OSS
     *
     * @param dataStatisticsTask
     * @param energyManagementStatisticsVo
     * @param fileName
     * @return
     */
    public String exportWord(DataStatisticsTask dataStatisticsTask, EnergyManagementStatisticsVo energyManagementStatisticsVo, String fileName) {
        String temDir = this.getClass().getResource("/").getPath() + "/bin/ENERGY.docx";
        Map<String, Object> params = Maps.newHashMap();
        params.put(EnergyManagementStatisticsVo.DATA_DATE, DatetimeUtil.formatDate(new Date(), DatetimeUtil.TIME_FORMAT_Y_M_D));
        params.put(EnergyManagementStatisticsVo.PLATE_NO, dataStatisticsTask.getPlateNo());
        params.put(EnergyManagementStatisticsVo.BEGIN_DATE, DatetimeUtil.formatDate(dataStatisticsTask.getBeginDate(), DatetimeUtil.DATE_FORMAT_YMD_LONG));
        params.put(EnergyManagementStatisticsVo.END_DATA, DatetimeUtil.formatDate(dataStatisticsTask.getEndDate(), DatetimeUtil.DATE_FORMAT_YMD_LONG));
        params.put(EnergyManagementStatisticsVo.WHOLE_VEHICLE, energyManagementStatisticsVo.getWholeVehicleVo());
        params.put(EnergyManagementStatisticsVo.WHOLE_MOTOR_POWER, generatePicture(energyManagementStatisticsVo.getWholeVehicleVo().getMotorPowerDistributionList(), EnergyManagementStatisticsVo.WHOLE_MOTOR_POWER_IMAGE, "功率/W", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.WHOLE_ACCESSORY_POWER, generatePicture(energyManagementStatisticsVo.getWholeVehicleVo().getAccessoryPowerDistributionList(), EnergyManagementStatisticsVo.WHOLE_ACCESSORY_POWER_IMAGE, "功率/W", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.FUEL_CELL_SYSTEM, energyManagementStatisticsVo.getFuelCellSystemVo());
        params.put(EnergyManagementStatisticsVo.FUEL_CELL_OFF_TILE, generatePicture(energyManagementStatisticsVo.getFuelCellSystemVo().getOffTimeList(), EnergyManagementStatisticsVo.FUEL_CELL_OFF_TILE_IMAGE, "时间/min", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.FUEL_CELL_OPERATING_POINT, generatePicture(energyManagementStatisticsVo.getFuelCellSystemVo().getOperatingPointList(), EnergyManagementStatisticsVo.FUEL_CELL_OPERATING_POINT_IMAGE, "电流/A", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.FUEL_CELL_AVERAGE_GROSS_POWER, generatePicture(energyManagementStatisticsVo.getFuelCellSystemVo().getGrossPowerDistributionList(), EnergyManagementStatisticsVo.FUEL_CELL_AVERAGE_GROSS_POWER_IMAGE, "功率/W", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.BATTERY, energyManagementStatisticsVo.getBatteryVo());
        params.put(EnergyManagementStatisticsVo.BATTERY_RUN_POINT, generatePicture(energyManagementStatisticsVo.getBatteryVo().getRunPointList(), EnergyManagementStatisticsVo.BATTERY_RUN_POINT_IMAGE, "功率/W", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.BATTERY_SOC, generatePicture(energyManagementStatisticsVo.getBatteryVo().getSocList(), EnergyManagementStatisticsVo.BATTERY_SOC_IMAGE, "占比/%", "次数/%", "占比"));
        params.put(EnergyManagementStatisticsVo.STACK_LIFE_PREDICTION, energyManagementStatisticsVo.getStackLifePredictionVo());
        params.put(EnergyManagementStatisticsVo.BATTERY_LIFE_PREDICTION, energyManagementStatisticsVo.getBatteryLifePredictionVo());
        params.put(EnergyManagementStatisticsVo.PARTS_LIFE_PREDICTION, energyManagementStatisticsVo.getPartsLifePredictionVo());
        try {
            WordUtil.exportWord(temDir, internalReportFilePath, fileName, params);
        } catch (Exception e) {
            LOGGER.warn("Failed to generate file", e);
            return null;
        }
        String iReportDirName = "http://" + "rfdmas" + "." + "oss-cn-shenzhen.aliyuncs.com" + "/" + "rfdmas-master/fat-report-files/internal/";
        return iReportDirName + fileName;
    }

 generatePicture方法生成图片,参照https://mp.csdn.net/editor/html/115749962

package com.utils;

import cn.afterturn.easypoi.word.WordExportUtil;
import com.alibaba.dubbo.common.utils.Assert;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;

/**
 * @author leo.xiong
 * @version 2020/6/6
 * @className WordUtil
 * @Description
 */
public class WordUtil {
    /**
     * 导出word
     * <p>第一步生成替换后的word文件,只支持docx</p>
     * <p>第二步下载生成的文件</p>
     * <p>第三步删除生成的临时文件</p>
     * 模版变量中变量格式:{
   
   {foo}}
     *  @param templatePath word模板地址
     * @param temDir       生成临时文件存放地址
     * @param params       替换的参数
     */
    public static void exportWord(String templatePath, String temDir, String fileName, Map<String, Object> params) {
        Assert.notNull(templatePath, "模板路径不能为空");
        Assert.notNull(temDir, "临时文件路径不能为空");
//            Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式");
        if (!temDir.endsWith("/")) {
            temDir = temDir + File.separator;
        }
        File dir = new File(temDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        try {
            XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params);
            String tmpPath = temDir+ fileName;
            FileOutputStream fos = new FileOutputStream(tmpPath);
            doc.write(fos);
            fos.flush();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

模板样板地址:https://download.csdn.net/download/xionglangs/16686619

猜你喜欢

转载自blog.csdn.net/xionglangs/article/details/115750066