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

news/2024/11/25 21:18:38/

一、项目背景

    因本人的公司是做短信通信服务的,所以客户需要将短信的发送量,按照他们给定的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 {@Resourceprivate 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文件转PDFDailyPaperUtils.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: trueoffice-home: C:\\Program Files\\LibreOfficeport-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.ppmy.cn/news/120552.html

相关文章

线程池及gdb调试多线程

一、线程池概念和使用 概念&#xff1a;通俗的讲就是一个线程的池子&#xff0c;可以循环的完成任务的一组线程集合 必要性&#xff1a; 我们平时创建一个线程&#xff0c;完成某一个任务&#xff0c;等待线程的退出。但当需要创建大量的线程时&#xff0c;假设T1为创建线程…

877.石子游戏

class Solution:def stoneGame(self, piles: List[int]) -> bool:return True

6.宝石与石头

给你一个字符串 jewels 代表石头中宝石的类型&#xff0c;另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型&#xff0c;你想知道你拥有的石头中有多少是宝石。 字母区分大小写&#xff0c;因此 "a" 和 "A" 是不…

石子合并(环形)

一&#xff0c;题目 二&#xff0c;思路 区间dp前缀和&#xff0c;区间dp思路即某个区间的最优值为该区间的子区间最优值合并之后的最优值 三&#xff0c;代码 #include<bits/stdc.h> using namespace std; int MIN[205][205]{0},MAX[205][205]{0},sum[205]{0},arr[205]{…

众昂矿业架构师刘金海:氢氟酸原材料依赖萤石

从萤石资源到氢氟酸&#xff0c;从氟碳化学品到含氟高分子材料&#xff0c;围绕“氟”的“前世今生”&#xff0c;永和不断挖掘演绎&#xff0c;并向着新能源与碳中和两大方向拓展延伸。 氢氟酸是现代氟化工的基础&#xff0c;是整个氟化工产业链的起点&#xff0c;是制取元素…

众昂矿业:萤石的简介及其应用

萤石&#xff0c;又称氟石&#xff0c;是一种不可再生资源&#xff0c;其主要成分是氟化钙&#xff0c;是现代工业的重要矿物原料。萤石在冶金、化工、建材、光学等传统领域应用广泛&#xff0c;并且其应用也逐渐拓展到新能源、新材料等领域。萤石是一种稀缺性资源&#xff0c;…

3600、宝石与石头

给你一个字符串 jewels 代表石头中宝石的类型&#xff0c;另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型&#xff0c;你想知道你拥有的石头中有多少是宝石。 字母区分大小写&#xff0c;因此 "a" 和 "A" 是不…

汉白玉产地在哪里_汉白玉的产地 汉白玉是产自哪里的

说到&#xff0c;大家都是比较熟悉了&#xff0c;汉白玉是上等的建筑和雕刻材料&#xff0c;现在也有不少人用做建筑的材料。虽然汉白玉比较常见&#xff0c;但是有很多人不知道汉白玉是产自哪里的。下面我们就来了解汉白玉产地。 汉白玉产地 汉白玉是纯白色的大理石&#xff0…