一、项目背景
因本人的公司是做短信通信服务的,所以客户需要将短信的发送量,按照他们给定的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>