读取PPT模板替换数据生成PDF报表

news2024/10/7 6:46:41

一、项目背景

    因本人的公司是做短信通信服务的,所以客户需要将短信的发送量,按照他们给定的PPT样例模板,来生成PDF报表数据,即PPT的样式,数据如何展示都是规定好了的,而我需要做的就是将真实的数据,渲染到样例PPT上去,并输出PDF即可。

二、思路

首先是将原生的PPT转换成xml模板,然后将xml模板的中样例数据转换成真实数据,最后输出PDF

1、注意点

将PPT生成xml可以借助一个解压工具,7zip提取xml文件

将PPT生成PDF需要借助LibreOffice 7.5,这个软件免费且无水印,需要本地安装

三、需求展示

以下为样例模板,我们需要做的 就是将真实的发送数据,进行替换

 

 四、生成xml

通过7zip提取xml文件,提取后如下

 

 

 其中的slide.xml为单纯的文字或者表,chart.xml为饼图,柱状图对应的xml

 将样例模板PPT也拷贝到项目中 ,然后将xml拷贝到项目中,需要哪些表图或者柱状图就拷贝哪些xml

 

我们打开一个xml看下,如近三天发送总量表对应的xml,我们需要替换的就是如下的数据

五、伪代码

1、引入依赖

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>${freemarker.version}</version>
        </dependency>

        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-core</artifactId>
            <version>${jodconverter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>${jodconverter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-spring-boot-starter</artifactId>
            <version>${jodconverter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.libreoffice</groupId>
            <artifactId>ridl</artifactId>
            <version>${ridl.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi-ooxml.version}</version>
        </dependency>

2、定义数据实体

实体的属性值,就是最终要替换到xml中的key

@Data
public class SmsReportPaper {

    private String year;

    private String month;

    private String day;

    /**
     * 昨天日期/上月
     */
    private String yesterday;

    /**
     * 上周同天日期/上年同期同月
     */
    private String lastWeek;

    /**
     * 上月同天日期
     */
    private String lastMonth;

    /**
     * 两个月以前
     */
    private String twoMonthAgo;

    /**
     * 三个月以前
     */
    private String threeMonthAgo;

    /**
     * (近三天/三个月) 发送量统计情况
     */
    private List<SmsDailyStatistics> lastThreeDayList;

    /**
     * (昨日/上个月)发送量:按运营商统计
     */
    private List<SmsDailyIndex> operatorDailyList;

    /**
     * (昨日/上个月)发送量:按序列号
     */
    private List<SmsDailyIndex> cdkeyDailyList;

    /**
     * (昨日/上个月)发送量:按通道
     */
    private List<SmsDailyIndex> channelDailyList;

    /**
     * (昨日/上个月)发送量:按部门
     */
    private List<SmsDailyIndex> departmentDailyList;


    /**
     * 运营商发送短信发送变化趋势图
     */
    private List<SmsPaperContrast> operatorPaperContrasts;

    /**
     * 序列号发送变化趋势图
     */
    private List<SmsPaperContrast> cdkeyPaperContrasts;

    /**
     * 通道发送变化趋势图
     */
    private List<SmsPaperContrast> channelPaperContrasts;

    /**
     * 序列号发送变化趋势表数据
     */
    private List<SmsCdKeyVariationTrendData> smsCdKeyVariationTrendDataList;
}

需要注意的是,定义实体的时候,需要根据PPT模板的key来确定层级关系

3、编写业务逻辑

import org.apache.commons.lang3.StringUtils;
import org.jodconverter.DocumentConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;

@Component
public class SmsDataReportTask {

    @Resource
    private DocumentConverter documentConverter;

    //伪造数据
    
    List<SmsCdKeyVariationTrendData> dataList = getList();
    SmsReportPaper smsReportPaper = new SmsReportPaper();
    String time = "2023-05-31";
    String filePath = createFileAndGetPath(dataList ,smsReportPaper ,time );
    
    

 /**
     * 通过resources下的模板和源数据对象生成PDF报表,并返回报表路径
     */
    private String createFileAndGetPath(List<SmsCdKeyVariationTrendData> dataList, SmsReportPaper smsReportPaper, String time) throws Exception {
        //将resource目录下模板全部输出到对应目录下
        String templatePath = BusinessFileUtils.genStaticFilePath(paramsConfiguration.getFileDirPath(), SMS, FINE_NAME_2, FINE_NAME_3, FINE_NAME_5);
        //已经将源数据替换后xml中的文件存储目录
        String xmlOutPath = BusinessFileUtils.genStaticFilePath(paramsConfiguration.getFileDirPath(), SMS, FINE_NAME_2, FINE_NAME_3, FINE_NAME_6);
        //生成ppt输出路径
        String pptOutPath = BusinessFileUtils.genStaticFilePath(paramsConfiguration.getFileDirPath(), SMS, FINE_NAME_2, FINE_NAME_3);
        //PPT原生XML存储路径
        String resourcePath = FINE_NAME_5 + File.separator + FINE_NAME_3;
        String paperFileName = "短信统计日报_";
        //读取PPT原生XML文件名列表
        List<String> list = DailyPaperUtils.readTemplateNames(resourcePath, templatePath);
        //循环遍历每一个原生的PPT的xml模板,并替换模板中的参数,并生成替换后的xml模板到对应的temp目录
        for (String fileName : list) {
            DailyPaperUtils.createTemplate(fileName, smsReportPaper, xmlOutPath, templatePath);
        }
        //获取PPT模板输出页数,因为需要输出序列号的数据未知,所以动态获取输出页数
        int pageNum = getSlideIndex(dataList);
        //输出PPT文件
        DailyPaperUtils.outPutDailyPaperPPT(list, time, xmlOutPath, pptOutPath, templatePath, pageNum, paperFileName);
        //将PPT文件转PDF
        DailyPaperUtils.ppt2Pdf(pptOutPath, time, documentConverter, paperFileName);
        //清空历史数据
        DailyPaperUtils.clearTempFile(pptOutPath, paperFileName, time);
        //返回报表文件的路径
        return pptOutPath + File.separator + paperFileName + time + ".pdf";
    }

}

上面的业务逻辑主要就是从数据库中查询到具体的业务数据,然后借助工具类生成PPT和转换PDF,因每个人需要生成的PDF的内容不一样,对于数据的组装和获取我就不多做粘贴,只展示个大致的逻辑

4、生成PPT和转换PDF的工具类

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
import org.apache.commons.io.FileUtils;
import org.jodconverter.DocumentConverter;
import org.jodconverter.document.DefaultDocumentFormatRegistry;
import org.jodconverter.office.OfficeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;


public class DailyPaperUtils {
    private final static Logger log = LoggerFactory.getLogger(DailyPaperUtils.class);

    /**
     * 读取模板文件名称
     *
     * @return
     * @throws Exception
     */
    public static List<String> readTemplateNames(String resourcePath, String templatePath) throws Exception {
        List<String> templateList = new ArrayList<>();

        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = resolver.getResources(resourcePath + File.separator + "*");

        if (resources.length == 0) {
            throw new FileNotFoundException("文件目录不存在:" + resourcePath);
        }
        for (Resource file : resources) {
            //这里每次生成日报都将对应模板文件复制次到对应目录,生成完后删除,防止被别人误删导致生成模板报错
            File templateFile = new File(templatePath + File.separator + file.getFilename());
            FileUtils.copyInputStreamToFile(file.getInputStream(), templateFile);
            if (templateFile.isFile() && templateFile.getName().endsWith(".xml")) {
                templateList.add(templateFile.getName());
            }
        }
        return templateList;
    }

    /**
     * 替换模板中的参数
     *
     * @param templateName 模板名称
     * @param data         封装的数据
     * @param xmlOutPath   xml文件输出的路径
     * @param templatePath xml模板路径
     * @throws Exception
     */
    public static void createTemplate(String templateName, Object data, String xmlOutPath, String templatePath) throws Exception {
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_30);
        cfg.setDefaultEncoding("UTF-8");
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        cfg.setLogTemplateExceptions(false);
        cfg.setWrapUncheckedExceptions(true);
        cfg.setDirectoryForTemplateLoading(new File(templatePath));
        Template t = cfg.getTemplate(templateName);
        File outFile = new File(xmlOutPath + File.separator + templateName);
        if (!outFile.getParentFile().exists()) {
            outFile.getParentFile().mkdirs();
        }
        try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), StandardCharsets.UTF_8))) {
            // 将填充数据填入模板文件并输出到目标文件
            t.process(data, out);
        } catch (Exception e) {
            log.error("e:" + e);
        }
    }

    /**
     * 输出日报PPT文件
     *
     * @param list
     * @param date
     * @param xmlOutPath
     * @param pptOutPath
     * @param templatePath
     * @param pageNum
     * @param fileName
     */
    public static void outPutDailyPaperPPT(List<String> list, String date, String xmlOutPath, String pptOutPath, String templatePath, Integer pageNum, String fileName) {
        try {
            //读取模板文件
            File templateFile = new File(templatePath + File.separator + "DailyPaperTemplate.pptx");
            ZipFile zipFile = new ZipFile(templateFile);
            Enumeration<? extends ZipEntry> zipEntrys = zipFile.entries();
            //新文件输出
            ZipOutputStream zipout = new ZipOutputStream(new FileOutputStream(pptOutPath + File.separator + fileName + date + ".pptx"));
            int len = -1;
            byte[] buffer = new byte[1024];
            File template = null;
            while (zipEntrys.hasMoreElements()) {
                ZipEntry next = zipEntrys.nextElement();
                InputStream is = zipFile.getInputStream(next);
                // 把输入流的文件传到输出流中 如果是对应的数据由我们输入
                zipout.putNextEntry(new ZipEntry(next.toString()));
                boolean flag = false;
                //不需要输出的页面
                boolean noOutput = false;
                for (String s : list) {
                    if (next.toString().contains("ppt/slides/" + s)) {
                        Integer slide = Integer.valueOf(s.replace("slide", "").replace(".xml", ""));
                        if (slide > pageNum) {
                            noOutput = true;
                            continue;
                        }
                        flag = true;
                        template = new File(xmlOutPath + File.separator + s);
                    } else if (next.toString().contains("ppt/charts/" + s)) {
                        flag = true;
                        template = new File(xmlOutPath + File.separator + s);
                    }
                }
                if (noOutput) {
                    continue;
                }
                if (flag) {
                    InputStream in = new FileInputStream(template);
                    while ((len = in.read(buffer)) != -1) {
                        zipout.write(buffer, 0, len);
                    }
                    in.close();
                } else {
                    while ((len = is.read(buffer)) != -1) {
                        zipout.write(buffer, 0, len);
                    }
                    is.close();
                }
            }
            zipout.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 将ppt转成pdf
     *
     * @param pptPath
     * @param date
     * @param documentConverter
     * @param fileName
     * @throws OfficeException
     */
    public static void ppt2Pdf(String pptPath, String date, DocumentConverter documentConverter, String fileName) throws OfficeException {
        File in = new File(pptPath + File.separator + fileName + date + ".pptx");
        File out = new File(pptPath + File.separator + fileName + date + ".pdf");
        documentConverter.convert(in).as(DefaultDocumentFormatRegistry.HTML).to(out).as(DefaultDocumentFormatRegistry.PDF).execute();
    }

    /**
     * 日报生成临时文件清理,以及历史日报文件清理
     *
     * @param filePath
     * @param fileName
     * @param date
     */
    public static void clearTempFile(String filePath, String fileName, String date) {
        try {
            //删除临时文件夹
            File tempFileDir = new File(filePath + File.separator + "temp");
            File[] files = tempFileDir.listFiles();
            for (File file : files) {
                file.delete();
            }

            File templateFileDir = new File(filePath + File.separator + "template");
            File[] templateFiles = templateFileDir.listFiles();
            for (File file : templateFiles) {
                file.delete();
            }
            File pptFile = new File(filePath + File.separator + fileName + date + ".pptx");
            if (pptFile.exists()) {
                pptFile.delete();
            }

            //清理180天以前的日报文件
            File historyFileDir = new File(filePath);
            File[] historyFiles = historyFileDir.listFiles();
            for (File historyFile : historyFiles) {
                if (historyFile.isFile() && historyFile.getName().startsWith(fileName)) {
                    String name = historyFile.getName();
                    String day = name.replace(fileName, "").replace(".pdf", "");
                    if (day.length() == 7) {
                        day = day + "-05";
                    }
                    Date fileDate = DateUtils.parseDate(day, "yyyy-MM-dd");
                    Date dateBefore = DateUtils.getDateBefore(new Date(), 180);
                    if (fileDate.compareTo(dateBefore) < 0) {
                        historyFile.delete();
                    }
                }
            }
        } catch (Exception e) {
            log.error("delete file error:", e);
        }
    }
}

5、配置文件配置

因使用转PDF的工具的原因,需要在本地安装后在yml文件里做好配置 ,如果客户是windows机器,配置如下 ,office-home根据自身的安装路径来配置,如果不需要转pdf,只需要生成ppt,那么这个配置可以不用,LibreOffice 7.5也无需 安装。

jodconverter:
  local:
    enabled: true
    office-home: C:\\Program Files\\LibreOffice
    port-numbers: 2002

六、注意点

本篇博客对于代码只粘贴了一些关键的代码,但是生成ppt和转换PDF的工具类的代码是齐全的,读者在参考本篇博客做功能的时候,需要注意的就是定义数据实体,实体的定义一定要根据PPT模板样式的来,例如我做的功能的的近上月发送总量统计表的数据

 SmsReportPaper 对象定义的数据层级就为

private List<SmsDailyStatistics> lastThreeDayList;


import io.swagger.annotations.ApiParam;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class SmsDailyStatistics implements Serializable {

    private static final long serialVersionUID = 1L;
    @ApiParam("提交总数")
    private Long submitNumber;

    @ApiParam("拆分提交总数")
    private Long submitRealNumber;

    @ApiParam("发送成功数")
    private Long successNumber;

    @ApiParam("拆分发送成功数")
    private Long successRealNumber;

    @ApiParam("失败总数")
    private Long failNumber;

    @ApiParam("拆分发送失败数")
    private Long failRealNumber;

    @ApiParam("发送超时数")
    private Long timeoutNumber;

    @ApiParam("拆分超时总数")
    private Long timeoutRealNumber;

    @ApiParam("YEAR:yyyy,MONTH:yyyyMM,DAY:yyyyMMdd")
    private String reportTime;

    @ApiParam("序列号")
    private String cdKey;

    @ApiParam("统计指标名称")
    private String indexName;

    @ApiParam("占比: %")
    private String proportion;

    @ApiParam("占比:0.xx")
    private BigDecimal ratio;

    @ApiParam("成功率")
    private String successRate;

    @ApiParam("增长率")
    private String growthRate;

  }

上传到在xml里替换时,就

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
       xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
       xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
    <p:cSld>
        <p:bg>
            <p:bgPr>
                <a:blipFill rotWithShape="0">
                    <a:blip r:embed="rId2"/>
                    <a:stretch/>
                </a:blipFill>
                <a:effectLst/>
            </p:bgPr>
        </p:bg>
        <p:spTree>
            <p:nvGrpSpPr>
                <p:cNvPr id="1" name=""/>
                <p:cNvGrpSpPr/>
                <p:nvPr/>
            </p:nvGrpSpPr>
            <p:grpSpPr>
                <a:xfrm>
                    <a:off x="0" y="0"/>
                    <a:ext cx="0" cy="0"/>
                    <a:chOff x="0" y="0"/>
                    <a:chExt cx="0" cy="0"/>
                </a:xfrm>
            </p:grpSpPr>
            <p:sp>
                <p:nvSpPr>
                    <p:cNvPr id="49" name="文本框 5"/>
                    <p:cNvSpPr/>
                    <p:nvPr/>
                </p:nvSpPr>
                <p:spPr>
                    <a:xfrm>
                        <a:off x="3920040" y="459360"/>
                        <a:ext cx="4351320" cy="516240"/>
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                        <a:avLst/>
                    </a:prstGeom>
                    <a:noFill/>
                    <a:ln w="0">
                        <a:noFill/>
                    </a:ln>
                </p:spPr>
                <p:style>
                    <a:lnRef idx="0">
                        <a:scrgbClr r="0" g="0" b="0"/>
                    </a:lnRef>
                    <a:fillRef idx="0">
                        <a:scrgbClr r="0" g="0" b="0"/>
                    </a:fillRef>
                    <a:effectRef idx="0">
                        <a:scrgbClr r="0" g="0" b="0"/>
                    </a:effectRef>
                    <a:fontRef idx="minor"/>
                </p:style>
                <p:txBody>
                    <a:bodyPr lIns="90000" tIns="45000" rIns="90000" bIns="45000" anchor="t">
                        <a:spAutoFit/>
                    </a:bodyPr>
                    <a:lstStyle/>
                    <a:p>
                        <a:pPr algn="ctr">
                            <a:lnSpc>
                                <a:spcPct val="100000"/>
                            </a:lnSpc>
                        </a:pPr>
                        <a:r>
                            <a:rPr lang="zh-CN" sz="2800" b="0" strike="noStrike" spc="-1">
                                <a:solidFill>
                                    <a:srgbClr val="484E66"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>近三月发送总量统计表</a:t>
                        </a:r>
                        <a:endParaRPr lang="en-US" sz="2800" b="0" strike="noStrike" spc="-1">
                            <a:solidFill>
                                <a:srgbClr val="000000"/>
                            </a:solidFill>
                            <a:latin typeface="Arial"/>
                        </a:endParaRPr>
                    </a:p>
                </p:txBody>
            </p:sp>
            <p:sp>
                <p:nvSpPr>
                    <p:cNvPr id="50" name="文本框 6"/>
                    <p:cNvSpPr/>
                    <p:nvPr/>
                </p:nvSpPr>
                <p:spPr>
                    <a:xfrm>
                        <a:off x="824760" y="5923440"/>
                        <a:ext cx="10541160" cy="272160"/>
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                        <a:avLst/>
                    </a:prstGeom>
                    <a:noFill/>
                    <a:ln w="0">
                        <a:noFill/>
                    </a:ln>
                </p:spPr>
                <p:style>
                    <a:lnRef idx="0">
                        <a:scrgbClr r="0" g="0" b="0"/>
                    </a:lnRef>
                    <a:fillRef idx="0">
                        <a:scrgbClr r="0" g="0" b="0"/>
                    </a:fillRef>
                    <a:effectRef idx="0">
                        <a:scrgbClr r="0" g="0" b="0"/>
                    </a:effectRef>
                    <a:fontRef idx="minor"/>
                </p:style>
                <p:txBody>
                    <a:bodyPr lIns="90000" tIns="45000" rIns="90000" bIns="45000" anchor="t">
                        <a:spAutoFit/>
                    </a:bodyPr>
                    <a:lstStyle/>
                    <a:p>
                        <a:pPr>
                            <a:lnSpc>
                                <a:spcPct val="100000"/>
                            </a:lnSpc>
                        </a:pPr>
                        <a:r>
                            <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>*</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="zh-CN" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>较上一月增长率计算公式为:</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>(</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="zh-CN" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>上月短信发送总量</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>-</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="zh-CN" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>上上月短信发送总量</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>)/</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="zh-CN" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>上月短信发送总量</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="97">
                                <a:solidFill>
                                    <a:srgbClr val="808080"/>
                                </a:solidFill>
                                <a:latin typeface="微软雅黑"/>
                                <a:ea typeface="微软雅黑"/>
                            </a:rPr>
                            <a:t>*100%</a:t>
                        </a:r>
                        <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                            <a:solidFill>
                                <a:srgbClr val="000000"/>
                            </a:solidFill>
                            <a:latin typeface="Arial"/>
                        </a:endParaRPr>
                    </a:p>
                </p:txBody>
            </p:sp>
            <p:graphicFrame>
                <p:nvGraphicFramePr>
                    <p:cNvPr id="51" name="表格 8"/>
                    <p:cNvGraphicFramePr/>
                    <p:nvPr/>
                </p:nvGraphicFramePr>
                <p:xfrm>
                    <a:off x="1828800" y="2096640"/>
                    <a:ext cx="8730720" cy="3069720"/>
                </p:xfrm>
                <a:graphic>
                    <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table">
                        <a:tbl>
                            <a:tblPr/>
                            <a:tblGrid>
                                <a:gridCol w="1455120">
                                    <a:extLst>
                                        <a:ext uri="{9D8B030D-6E8A-4147-A177-3AD203B41FA5}">
                                            <a16:colId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="20000"/>
                                        </a:ext>
                                    </a:extLst>
                                </a:gridCol>
                                <a:gridCol w="1455120">
                                    <a:extLst>
                                        <a:ext uri="{9D8B030D-6E8A-4147-A177-3AD203B41FA5}">
                                            <a16:colId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="20001"/>
                                        </a:ext>
                                    </a:extLst>
                                </a:gridCol>
                                <a:gridCol w="1455120">
                                    <a:extLst>
                                        <a:ext uri="{9D8B030D-6E8A-4147-A177-3AD203B41FA5}">
                                            <a16:colId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="20002"/>
                                        </a:ext>
                                    </a:extLst>
                                </a:gridCol>
                                <a:gridCol w="1455120">
                                    <a:extLst>
                                        <a:ext uri="{9D8B030D-6E8A-4147-A177-3AD203B41FA5}">
                                            <a16:colId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="20003"/>
                                        </a:ext>
                                    </a:extLst>
                                </a:gridCol>
                                <a:gridCol w="1455120">
                                    <a:extLst>
                                        <a:ext uri="{9D8B030D-6E8A-4147-A177-3AD203B41FA5}">
                                            <a16:colId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="20004"/>
                                        </a:ext>
                                    </a:extLst>
                                </a:gridCol>
                                <a:gridCol w="1455120">
                                    <a:extLst>
                                        <a:ext uri="{9D8B030D-6E8A-4147-A177-3AD203B41FA5}">
                                            <a16:colId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="20005"/>
                                        </a:ext>
                                    </a:extLst>
                                </a:gridCol>
                            </a:tblGrid>
                            <a:tr h="1071720">
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>日期</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnT>
                                        <a:lnB w="38160">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:schemeClr val="accent2"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>发送成功数</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>(拆分前</a:t>
                                            </a:r>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>/</a:t>
                                            </a:r>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>拆分后)</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr marL="90000" marR="90000" anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnT>
                                        <a:lnB w="38160">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="5EC9C5"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>发送失败数</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>(拆分前</a:t>
                                            </a:r>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>/</a:t>
                                            </a:r>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>拆分后)</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr marL="90000" marR="90000" anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnT>
                                        <a:lnB w="38160">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:schemeClr val="accent2"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>发送总数</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>(拆分前</a:t>
                                            </a:r>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>/</a:t>
                                            </a:r>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>拆分后)</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr marL="90000" marR="90000" anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnT>
                                        <a:lnB w="38160">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:schemeClr val="accent2"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>成功率</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr marL="90000" marR="90000" anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnT>
                                        <a:lnB w="38160">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:schemeClr val="accent2"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>较上一月</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="150000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="zh-CN" sz="1200" b="1" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:srgbClr val="404040"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>增长率</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr marL="90000" marR="90000" anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnT>
                                        <a:lnB w="38160">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:schemeClr val="accent2"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:extLst>
                                    <a:ext uri="{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}">
                                        <a16:rowId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="10000"/>
                                    </a:ext>
                                </a:extLst>
                            </a:tr>
                            <#list lastThreeDayList as day>
                            <a:tr h="666000">
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:schemeClr val="dk1"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>${day.reportTime}</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="38160" cap="flat" cmpd="sng" algn="ctr">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                            <a:round/>
                                            <a:headEnd type="none" w="med" len="med"/>
                                            <a:tailEnd type="none" w="med" len="med"/>
                                        </a:lnT>
                                        <a:lnB w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="CEE6EE"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:schemeClr val="dk1"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>${day.successNumber!"0"}/${day.successRealNumber!"0"}</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="38160" cap="flat" cmpd="sng" algn="ctr">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                            <a:round/>
                                            <a:headEnd type="none" w="med" len="med"/>
                                            <a:tailEnd type="none" w="med" len="med"/>
                                        </a:lnT>
                                        <a:lnB w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="CEE6EE"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                                <a:tabLst>
                                                    <a:tab pos="0" algn="l"/>
                                                </a:tabLst>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:schemeClr val="dk1"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>${day.failNumber!"0"}/${day.failRealNumber!"0"}</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="38160" cap="flat" cmpd="sng" algn="ctr">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                            <a:round/>
                                            <a:headEnd type="none" w="med" len="med"/>
                                            <a:tailEnd type="none" w="med" len="med"/>
                                        </a:lnT>
                                        <a:lnB w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="CEE6EE"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                                <a:tabLst>
                                                    <a:tab pos="0" algn="l"/>
                                                </a:tabLst>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:schemeClr val="dk1"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>${day.submitNumber!"0"}/${day.submitRealNumber!"0"}</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="38160" cap="flat" cmpd="sng" algn="ctr">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                            <a:round/>
                                            <a:headEnd type="none" w="med" len="med"/>
                                            <a:tailEnd type="none" w="med" len="med"/>
                                        </a:lnT>
                                        <a:lnB w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="CEE6EE"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                                <a:tabLst>
                                                    <a:tab pos="0" algn="l"/>
                                                </a:tabLst>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:schemeClr val="dk1"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>${day.successRate!"-"}</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="38160" cap="flat" cmpd="sng" algn="ctr">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                            <a:round/>
                                            <a:headEnd type="none" w="med" len="med"/>
                                            <a:tailEnd type="none" w="med" len="med"/>
                                        </a:lnT>
                                        <a:lnB w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="CEE6EE"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:tc>
                                    <a:txBody>
                                        <a:bodyPr/>
                                        <a:lstStyle/>
                                        <a:p>
                                            <a:pPr algn="ctr">
                                                <a:lnSpc>
                                                    <a:spcPct val="100000"/>
                                                </a:lnSpc>
                                                <a:tabLst>
                                                    <a:tab pos="0" algn="l"/>
                                                </a:tabLst>
                                            </a:pPr>
                                            <a:r>
                                                <a:rPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                    <a:solidFill>
                                                        <a:schemeClr val="dk1"/>
                                                    </a:solidFill>
                                                    <a:latin typeface="微软雅黑"/>
                                                    <a:ea typeface="微软雅黑"/>
                                                </a:rPr>
                                                <a:t>${day.growthRate!"-"}</a:t>
                                            </a:r>
                                            <a:endParaRPr lang="en-US" sz="1200" b="0" strike="noStrike" spc="-1">
                                                <a:solidFill>
                                                    <a:srgbClr val="000000"/>
                                                </a:solidFill>
                                                <a:latin typeface="Arial"/>
                                            </a:endParaRPr>
                                        </a:p>
                                    </a:txBody>
                                    <a:tcPr anchor="ctr">
                                        <a:lnL w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnL>
                                        <a:lnR w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnR>
                                        <a:lnT w="38160" cap="flat" cmpd="sng" algn="ctr">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                            <a:round/>
                                            <a:headEnd type="none" w="med" len="med"/>
                                            <a:tailEnd type="none" w="med" len="med"/>
                                        </a:lnT>
                                        <a:lnB w="12240">
                                            <a:solidFill>
                                                <a:srgbClr val="FFFFFF"/>
                                            </a:solidFill>
                                            <a:prstDash val="solid"/>
                                        </a:lnB>
                                        <a:solidFill>
                                            <a:srgbClr val="CEE6EE"/>
                                        </a:solidFill>
                                    </a:tcPr>
                                </a:tc>
                                <a:extLst>
                                    <a:ext uri="{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}">
                                        <a16:rowId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="10001"/>
                                    </a:ext>
                                </a:extLst>
                            </a:tr>
                        </#list>
                    </a:tbl>
                </a:graphicData>
            </a:graphic>
        </p:graphicFrame>
        <p:sp>
            <p:nvSpPr>
                <p:cNvPr id="52" name="矩形 12"/>
                <p:cNvSpPr/>
                <p:nvPr/>
            </p:nvSpPr>
            <p:spPr>
                <a:xfrm>
                    <a:off x="5557320" y="1000080"/>
                    <a:ext cx="1079640" cy="35640"/>
                </a:xfrm>
                <a:prstGeom prst="rect">
                    <a:avLst/>
                </a:prstGeom>
                <a:solidFill>
                    <a:srgbClr val="1CC6C1"/>
                </a:solidFill>
                <a:ln>
                    <a:noFill/>
                </a:ln>
            </p:spPr>
            <p:style>
                <a:lnRef idx="2">
                    <a:schemeClr val="accent1">
                        <a:shade val="50000"/>
                    </a:schemeClr>
                </a:lnRef>
                <a:fillRef idx="1">
                    <a:schemeClr val="accent1"/>
                </a:fillRef>
                <a:effectRef idx="0">
                    <a:schemeClr val="accent1"/>
                </a:effectRef>
                <a:fontRef idx="minor"/>
            </p:style>
            <p:txBody>
                <a:bodyPr lIns="90000" tIns="-9000" rIns="90000" bIns="-9000" anchor="ctr">
                    <a:noAutofit/>
                </a:bodyPr>
                <a:lstStyle/>
                <a:p>
                    <a:pPr algn="ctr">
                        <a:lnSpc>
                            <a:spcPct val="100000"/>
                        </a:lnSpc>
                    </a:pPr>
                    <a:endParaRPr lang="en-US" sz="1800" b="0" strike="noStrike" spc="-1">
                        <a:solidFill>
                            <a:schemeClr val="lt1"/>
                        </a:solidFill>
                        <a:latin typeface="Corbel"/>
                    </a:endParaRPr>
                </a:p>
            </p:txBody>
        </p:sp>
    </p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping/>
</p:clrMapOvr>
        </p:sld>

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

B站参战618,直播带货成变现香饽饽,直播数据分析必看

五月已经见底&#xff0c;年中电商大考“618购物节”自26号拉开序幕。 各大主播、平台、品牌都紧锣密鼓地布起活动网。去年&#xff0c;B站因首次参战双十一冲上热门&#xff0c;平台为此上线直播购物分区。 来源-B站 经过去年各大品牌、UP主对双十一购物节直播带货的试水、观…

LCR测试仪夹具选型指南新鲜出炉

好马配好鞍&#xff0c;好仪器配好夹具。有不少朋友好奇&#xff0c;仪器选好了&#xff0c;那测试夹具如何挑选&#xff1f; 接下来安泰测试为大家简单介绍一下关于LCR测试仪中常用的测试夹具。 1/ 四端/四端对测试线 01 TH26011AS 频率范围&#xff1a;5Hz-100kHz 最大…

火山引擎DataLeap:如何构建一套完整、易用的数据标准体系

数据标准是数据治理体系中的核心要素之一。 一方面&#xff0c;统一的数据标准可以在复杂的业务场景下&#xff0c;帮助团队对齐数据口径&#xff0c;提升数据在分析、诊断等场景的质量与效率&#xff1b;另一方面&#xff0c;数仓团队与分析师团队也需要沉淀一套敏捷、可控的…

TimSort——最快的排序算法

TimSort——最快的排序算法 排序算法是每个程序员绕不开的课题&#xff0c;无论是大学课程还是日常工作&#xff0c;都离不开排序算法。常见的排序算法有&#xff1a;冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、基数排序等。下面是这些算法性能的概…

2022年天府杯全国大学生数学建模竞赛D题高等院校综合发展状况与学科质量评估解题全过程文档及程序

2022年天府杯全国大学生数学建模竞赛 D题 高等院校综合发展状况与学科质量评估 原题再现&#xff1a; 问题背景&#xff1a;   高等院校是我国经济社会发展中的重要参与者&#xff0c;一流大学与一流学科的建成是实现社会主义共同富裕的重要基础。随着国家第二轮“双一流”…

PMP课堂模拟题目及解析(第16期)

151. 一个全球多学科项目的项目经理如何才能确保在所有学科中使用变更控制过程&#xff1f; A. 执行影响分析以考虑所有项目学科 B. 确保变更控制委员会有来自所有学科的代表 C. 邀请所有学科参加变更控制系统委员会会议&#xff0c;但仅从所参加的学科收集意见 D. 代表其…

让你不再好奇图片识别工具怎么用

你是否曾经遇到过想知道一张照片中是什么物品或者景色&#xff0c;却不知道如何搜索的情况&#xff1f;或者&#xff0c;你是否曾经想要识别一张照片中的人脸&#xff0c;想要借助图片识别软件&#xff0c;又不知道图片识别工具怎么用&#xff1f;别担心&#xff0c;接下来我将…

「实在RPA·地产数字员工」筑牢数字经济发展之基

地产行业是国民衣食住行日常生活中的重要组成部分&#xff0c;为人们提供遮风挡雨的温暖港湾。根据国家统计局数据&#xff0c;从GDP占比看&#xff0c;2020年房地产及其产业链占我国GDP的17%&#xff08;完全贡献&#xff09;&#xff0c;是我国经济发展的火车头之一。由此看来…

零代码、低代码、APaaS系统怎么选?一文带你避坑!

零代码、低代码、apaas的概念在整个全球行业内已经流行了很长一段时间。那这3个概念分别指的是什么&#xff1f;他们具备何种能力&#xff1f;企业如果要用该如何选&#xff1f;有哪些好用的低代码平台推荐&#xff1f;下面一文全部给你讲清楚&#xff01; 一、零代码、低代码…

HTML+CSS实训——Day07——发现页用JavaScript进一步修改

仓库链接:https://github.com/MengFanjun020906/HTML_SX 前言 继续改昨天的界面&#xff0c;我们在上周写的都是静态页面&#xff0c;这周开始给静态界面加上javascript&#xff0c;可以让其互相跳转&#xff0c;再加上一些功能。 Find.html // 歌曲列表let songs [{"s…

Java 集合List转 Map 和Map转List的方法总结(举例说明!)

最近遇到了一个场景是&#xff0c;要将从数据库中查出的List<bean>转换为List<map>然后再取map中的value&#xff0c;最后把所有的value写到Excel中。由于这个bean的属性太多了&#xff0c;我最开始没有采用list转map的方式取获取value&#xff0c;而是在for循环中…

结构型设计模式03-外观模式

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 外观模式&#xff08;门面模式&#xff09; 1、外观模式介绍 外观模式&#xff08;Facade Pattern&#xff09;&#xff0c;也称门…

外贸高手揭秘:心理学在谈判中的秘密武器!

在我看来&#xff0c;谈判与心理学密切相关&#xff0c;研究谈判就是研究心理学&#xff01;大学期间&#xff0c;我几乎读完了所有的心理学著作&#xff0c;我必须承认&#xff0c;这为我后来的外贸谈判打下了良好的基础。 有人说:为什么要用谈判这个词&#xff1f;这只是一个…

go语言学习——2.x

文章目录 控制结构if-elseswitchfor(range)break和continue标签与goto 函数参数与返回值传递变长参数defer内置函数递归函数函数作为参数闭包计算函数的执行时间 控制结构 if-else if condition{//do something }if condition{//do something }else{//do something }if condi…

SpringMVC03:Restfule和控制器

目录 一、控制器Controller 二、实现controller接口 三、使用注解Controller 四、RequestMappinng 五、RestFul风格 六、学习测试 1.再新建一个类RestfulController 2.在SPring MVC种可以使用PathVariable注解&#xff0c;让方法参数的值对应绑定到一个URI模板变量上。…

【hello C++】类和对象(中)

目录 1. 类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3. 析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 7.const成员 8.取地址及const取地址操作符重载 类和对象&#x1f337…

《Java并发编程实战》课程笔记(六)

管程&#xff1a;并发编程的万能钥匙 什么是管程 Java 采用的是管程技术&#xff0c;synchronized 关键字及 wait()、notify()、notifyAll() 这三个方法都是管程的组成部分。 管程和信号量是等价的&#xff0c;所谓等价指的是用管程能够实现信号量&#xff0c;也能用信号量实…

通用AppKey签名验证软件

一、 需求说明 签名验证是一种技术&#xff0c;用于确保数据完整性和身份验证。在Java应用程序中&#xff0c;签名通常是由开发人员提供的一个字符串&#xff0c;它基于请求的内容和一些密钥信息生成。这个签名可以被认为是一种指纹&#xff0c;它唯一地标识了请求的内容&…

BLECommonTool通用测试工具介绍

工具下载地址&#xff1a;BLECommonTool通用工具资源-CSDN文库 大家在使用过程中&#xff0c;如有发现bug或有更好的建议&#xff0c;欢迎留言或发我QQ邮箱&#xff1a;1255033066qq.com. 工具界面 以下是关于GMBLETool工具的详细使用说明&#xff1a; 蓝牙适配器状态检测&…

springcloudAlibaba整合knife4j整合swagger整合gateway,并且同步到Yapi上

springcloudAlibaba整合knife4j整合swagger整合gateway&#xff0c;并且同步到Yapi上 1.gateway模块 1.pom引入 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version&g…