跳到内容
当前位置:首页>PPT>第386讲:PPT 周会/月会自动生成——告别重复粘贴,Python与VBA双剑合璧

第386讲:PPT 周会/月会自动生成——告别重复粘贴,Python与VBA双剑合璧

  • 2026-11-09 10:19:08
第386讲:PPT 周会/月会自动生成——告别重复粘贴,Python与VBA双剑合璧

周会前夜,你还在手动复制Excel指标到PPT?图表格式又乱了?是时候用技术解放生产力了。

每个周一早晨,很多职场人的噩梦都是一样的:打开上周的PPT,把Excel里更新好的数据一个个复制粘贴到图表里,再小心翼翼地调整字体、对齐方式,生怕哪个数字错位了。一份月报,少则七八页,多则二三十页,光是机械操作就要耗掉一两个小时,还容易出错。

其实,这件事完全可以交给代码。今天这一讲,我们就围绕“周会/月会自动生成固定页式汇报PPT”这个高频场景,从痛点拆解、方案选型到实战代码,手把手教你用 Python 和 VBA 两种路径实现一键生成。文章最后还准备了5道选择题帮你自测掌握程度。


一、场景与痛点:为什么我们需要自动生成?

1. 典型场景还原

  • 周会/月会汇报:需要从多个Excel文件(或同一个工作簿的不同Sheet)中提取关键指标(如GMV、转化率、活跃用户数等),汇总到固定版式的PPT中。

  • 更新图表:PPT中通常包含柱状图、折线图、饼图等,这些图表的数据源需要随Excel更新。

  • 固定页式:公司通常有统一的PPT模板,每页的标题、位置、占位符都已固定,只需替换数据和图表。

2. 传统做法的三大痛点

痛点

具体表现

后果

重复粘贴

每个数字、每张图表都要手动复制→粘贴→核对

耗时、枯燥、易疲劳

图表格式乱

从Excel复制图表到PPT后,字体、颜色、大小经常错位;或者使用“粘贴链接”后源文件路径变化导致断链

汇报前还要花时间调格式,甚至现场翻车

版本管理混乱

每次另存为新文件,时间一长分不清哪个是最新版;多人协作时更甚

决策依据可能出错

核心诉求:一键生成固定页式的汇报PPT,且能保证数据和格式的一致性。


二、技术选型:Python vs VBA,谁更适合你?

面对这个需求,有两种主流技术路线:Python自动化 和 VBA宏。它们各有优劣,适用场景不同。

1. Python方案(python-pptx + pandas + matplotlib)

  • 核心库:

    • python-pptx:专门读写PowerPoint文件的库,可以创建/修改幻灯片、添加文本框、表格、图表等。

    • pandas:强大的数据处理库,轻松读取Excel、CSV,进行数据清洗和聚合。

    • matplotlib/ openpyxl:前者用于生成静态图表图片,后者可直接操作Excel图表(但跨平台兼容性一般)。

  • 优点:

    • 适合批量生成多份PPT:比如需要为10个区域经理各生成一份定制化的月报,Python写个循环即可。

    • 跨平台:可以在Windows、macOS甚至Linux服务器上运行(只要不涉及Windows COM)。

    • 数据处理能力极强:pandas应对百万行数据、多表关联游刃有余。

    • 易于集成:可结合定时任务(如Windows Task Scheduler、cron)实现完全无人值守。

  • 缺点:

    • 环境配置稍复杂(需要安装Python及库)。

    • 直接操作PPT中的现有图表(非图片)不如VBA方便,通常需要将图表导出为图片再插入。

    • 对PPT模板的占位符依赖较强,需要提前规划好模板。

2. VBA方案(PowerPoint.Application + Shapes + ChartData)

  • 核心对象:

    • PowerPoint.Application:PowerPoint应用程序对象,用于创建/打开演示文稿。

    • Shapes:幻灯片上的所有形状(文本框、图表、图片等)。

    • ChartData:图表的数据表对象,可直接修改图表底层数据。

  • 优点:

    • 深度集成Office:VBA运行在Office内部,直接调用对象模型,修改图表数据后格式自动保持。

    • 适合模板刷新:如果公司有一套固定模板,只需点击按钮更新数据,无需重新生成整个PPT。

    • 学习曲线平缓:对于经常使用Office的职场人,VBA宏录制功能可以快速上手。

    • 无需额外环境:只要有Office即可。

  • 缺点:

    • 不适合批量生成多份不同内容的PPT:VBA在单个PPT实例中操作,循环生成多个文件效率较低且容易出错。

    • 跨平台性差:macOS版Office的VBA支持有限,且无法在非Office环境运行。

    • 数据处理能力弱:虽然可以调用Excel对象,但复杂数据清洗不如Python方便。

3. 对照总结表

维度

Python

VBA

最佳场景

自动生成多份、数据复杂、跨平台

Office内模板刷新、单文件更新

批量生成

⭐⭐⭐⭐⭐

⭐⭐

图表格式保持

⭐⭐⭐(需技巧)

⭐⭐⭐⭐⭐

数据处理

⭐⭐⭐⭐⭐

⭐⭐

部署难度

中等(需安装Python)

简单(Office自带)

可维护性

高(代码模块化)

中(宏代码分散)

结论:如果你需要每周为不同部门生成不同数据的PPT,选Python;如果你只是在现有PPT模板里更新本周数据,选VBA。当然,两者也可以结合:用Python处理数据并生成图表图片,用VBA一键调用Python脚本并刷新PPT(进阶玩法,本文不展开)。


三、Python实现:从Excel到PPT的一键生成

下面我们通过一个完整案例,演示如何用Python实现“读取Excel指标 → 生成图表 → 填入PPT模板”。

1. 环境准备

确保安装以下库:

pip install python-pptx pandas matplotlib openpyxl
  • openpyxl用于pandas读取.xlsx文件。

2. 准备数据源和PPT模板

假设我们有一个Excel文件 sales_data.xlsx,结构如下:

  • Sheet1: “周指标”,包含列:日期、GMV、订单量、转化率。

  • 我们需要提取最新一周的数据,并生成一个柱状图(GMV vs 订单量)和一个指标卡(转化率)。

PPT模板 template.pptx已做好固定版式:

  • 第1页:标题页(占位符用于填日期)

  • 第2页:指标页(三个文本框分别放GMV、订单量、转化率)

  • 第3页:图表页(一个占位符图片,我们将替换为生成的图表)

3. Python脚本详解

步骤1:用pandas读取并处理Excel数据

import pandas as pd# 读取Exceldf = pd.read_excel('sales_data.xlsx', sheet_name='周指标')# 假设数据按日期升序,取最后一行作为最新周latest = df.iloc[-1]date_str = latest['日期'].strftime('%Y-%m-%d')gmv = latest['GMV']orders = latest['订单量']rate = latest['转化率']# 为了图表,我们取最近4周数据recent_4weeks = df.tail(4)

步骤2:用matplotlib生成图表并保存为图片

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示中文plt.rcParams['axes.unicode_minus'] = Falsefig, ax1 = plt.subplots(figsize=(6, 4))# 柱状图-GMV(左轴)ax1.bar(recent_4weeks['日期'].astype(str), recent_4weeks['GMV'], color='#5B9BD5', label='GMV')ax1.set_xlabel('日期')ax1.set_ylabel('GMV', color='#5B9BD5')ax1.tick_params(axis='y', labelcolor='#5B9BD5')# 折线图-订单量(右轴)ax2 = ax1.twinx()ax2.plot(recent_4weeks['日期'].astype(str), recent_4weeks['订单量'], color='#ED7D31', marker='o', label='订单量')ax2.set_ylabel('订单量', color='#ED7D31')ax2.tick_params(axis='y', labelcolor='#ED7D31')plt.title('近4周GMV与订单量趋势')fig.tight_layout()chart_path = 'trend_chart.png'plt.savefig(chart_path, dpi=100)plt.close()

步骤3:用python-pptx操作PPT模板

from pptx import Presentationfrom pptx.util import Inches, Ptprs = Presentation('template.pptx')# 第1页:标题页 - 修改副标题日期slide1 = prs.slides[0]for shape in slide1.shapes:    if shape.placeholder_format and shape.placeholder_format.idx == 1:  # 假设副标题占位符idx=1        shape.text = f'数据截止:{date_str}'# 第2页:指标页 - 找到对应文本框并填入slide2 = prs.slides[1]# 假设三个文本框名称分别为:text_gmv, text_orders, text_rate(可在PPT中提前命名)for shape in slide2.shapes:    if shape.name == 'text_gmv':        shape.text = f'{gmv/10000:.1f}万'    elif shape.name == 'text_orders':        shape.text = f'{orders}'    elif shape.name == 'text_rate':        shape.text = f'{rate*100:.1f}%'# 第3页:图表页 - 替换占位符图片slide3 = prs.slides[2]for shape in slide3.shapes:    if shape.name == 'chart_placeholder':  # 占位符图片名称        left, top, width, height = shape.left, shape.top, shape.width, shape.height        # 删除原占位符        sp = shape._element        sp.getparent().remove(sp)        # 添加新图片        slide3.shapes.add_picture(chart_path, left, top, width, height)        break# 保存生成的PPToutput_path = f'周会报告_{date_str}.pptx'prs.save(output_path)print(f'PPT已生成:{output_path}')

4. Python方案的注意事项与干货

  • 模板占位符命名:在PPT中,选中形状 → 右键“编辑替换文字” → 在“替代文字”选项卡中可设置名称(实际是shape.name)。提前命名好,代码中才能精准定位。

  • 图表格式保持:python-pptx插入图片会完全保持模板中占位符的大小和位置,因此只需设计好模板即可。

  • 批量生成:只需将上面的代码封装成函数,外层套一个循环读取不同Excel文件或不同Sheet,即可生成多份PPT。

  • 更优雅的图表:如果希望直接操作PPT中的原生图表(而非图片),可以使用python-pptx的chart模块,但需要提前在模板中创建好图表,然后通过chart_data对象更新数据。这种方式格式保持更好,但代码稍复杂。示例:

    # 假设slide3中有一个图表shapechart_shape = slide3.shapes[1]  # 或通过名称查找chart_data = chart_shape.chart_data# 清除旧数据,添加新数据chart_data.categories = recent_4weeks['日期'].astype(str)chart_data.add_series('GMV', recent_4weeks['GMV'])# 更新图表chart_shape.chart.replace_data(chart_data)

    注意:这种方式要求模板中的图表是“占位符图表”,且数据类型匹配。


四、VBA实现:Office内的模板刷新利器

如果你更习惯在PowerPoint里直接操作,或者公司模板不允许外部修改,VBA是更直接的方案。下面演示如何在PPT中写宏,从Excel读取数据并更新当前PPT的图表和文本框。

1. 准备工作

  • 启用开发者工具:文件 → 选项 → 自定义功能区 → 勾选“开发工具”。

  • 打开VBA编辑器:Alt+F11。

  • 添加引用:工具 → 引用 → 勾选 Microsoft Excel xx.x Object Library(用于操作Excel)。

2. VBA代码实战

场景:当前PPT已打开,点击按钮从指定Excel更新数据。

Sub UpdatePPTFromExcel()    Dim pptApp As PowerPoint.Application    Dim pptPres As Presentation    Dim excelApp As Excel.Application    Dim excelWb As Excel.Workbook    Dim excelWs As Excel.Worksheet    Dim slide As Slide    Dim shp As Shape    Dim latestDate As String    Dim latestGMV As Double, latestOrders As Double, latestRate As Double    Set pptApp = PowerPoint.Application    Set pptPres = pptApp.ActivePresentation    ' 打开Excel文件(后台)    Set excelApp = New Excel.Application    excelApp.Visible = False    Set excelWb = excelApp.Workbooks.Open("C:\data\sales_data.xlsx")    Set excelWs = excelWb.Sheets("周指标")    ' 读取最新一行数据(假设第1行是标题,数据从第2行开始)    Dim lastRow As Long    lastRow = excelWs.Cells(excelWs.Rows.Count, 1).End(xlUp).Row    latestDate = excelWs.Cells(lastRow, 1).Value    latestGMV = excelWs.Cells(lastRow, 2).Value    latestOrders = excelWs.Cells(lastRow, 3).Value    latestRate = excelWs.Cells(lastRow, 4).Value    ' 遍历所有幻灯片,更新形状和图表    For Each slide In pptPres.Slides        For Each shp In slide.Shapes            ' 更新文本框            If shp.Type = msoTextBox Or shp.HasTextFrame Then                If shp.TextFrame.HasText Then                    Select Case shp.Name                        Case "text_gmv"                            shp.TextFrame.TextRange.Text = Format(latestGMV / 10000, "0.0") & "万"                        Case "text_orders"                            shp.TextFrame.TextRange.Text = latestOrders                        Case "text_rate"                            shp.TextFrame.TextRange.Text = Format(latestRate * 100, "0.0") & "%"                        Case "subtitle_date"                            shp.TextFrame.TextRange.Text = "数据截止:" & latestDate                    End Select                End If            End If            ' 更新图表(如果形状是图表)            If shp.Type = msoChart Then                Dim chartData As ChartData                Set chartData = shp.Chart.ChartData                chartData.Activate ' 激活数据表                Dim dataSheet As Excel.Worksheet                Set dataSheet = chartData.Workbook.Sheets(1)                ' 假设图表数据在Excel的A1:B5,这里用最新4周数据更新                ' 为简化,直接写死范围,实际应从Excel读取最近4周                Dim i As Long                For i = 1 To 4                    dataSheet.Cells(i + 1, 1).Value = excelWs.Cells(lastRow - 4 + i, 1).Value ' 日期                    dataSheet.Cells(i + 1, 2).Value = excelWs.Cells(lastRow - 4 + i, 2).Value ' GMV                Next i                ' 关闭数据表,图表自动更新                chartData.Workbook.Close            End If        Next shp    Next slide    ' 清理    excelWb.Close SaveChanges:=False    excelApp.Quit    Set excelApp = Nothing    MsgBox "PPT数据更新完成!", vbInformationEnd Sub

3. VBA方案的干货与技巧

  • 形状命名:和Python一样,提前在PPT中给需要更新的形状命名(选择窗格中可重命名),代码中通过shp.Name精准匹配。

  • 图表更新原理:VBA直接操作ChartData对象,相当于在PPT里双击图表打开Excel数据表,然后修改数据。因此图表格式完全保持,且是矢量图,放大不失真。

  • 错误处理:实际代码中应加入On Error处理,比如Excel文件未找到、形状不存在等。

  • 按钮触发:可以在PPT中插入一个形状(如矩形),右键“超链接” → “本文档中的位置” → 选择“第一张幻灯片”,然后在“动作设置”中选择“运行宏”。这样点击按钮即可更新。


五、Python与VBA的对比教学:如何选择与结合?

通过上面的讲解,我们可以清晰地看到两种技术的差异。为了帮助你在实际工作中做出正确选择,我们再从实现方法的角度做一个深度对比。

1. 数据读取方式

  • Python:pandas.read_excel()一行代码读取整个表,支持复杂筛选、聚合。适合数据分散在多个文件、需要清洗的场景。

  • VBA:通过Excel对象模型逐单元格读取,代码量稍多,但可以直接利用Excel的公式和筛选结果。适合数据源简单、已在当前Excel中的情况。

2. 图表生成方式

  • Python:通常生成静态图片插入,或使用python-pptx的图表对象(较新但功能有限)。图片方式灵活,可定制样式,但非矢量。

  • VBA:直接更新PPT原生图表,矢量、可编辑、格式完美。但图表类型受PPT限制。

3. 批量处理能力

  • Python:天然支持循环,可生成任意数量的PPT,且可结合multiprocessing加速。

  • VBA:在单个PPT中操作,若要生成多个文件,需频繁Presentations.Add和SaveAs,效率低且容易因对象未释放而崩溃。

4. 部署与分发

  • Python:需要目标机器安装Python环境及依赖库。可通过pyinstaller打包为exe,但体积较大。

  • VBA:直接随PPT文件分发,只要对方启用宏即可。但宏安全性设置可能阻止运行。

5. 混合架构建议

对于大型企业,可以:

  • 用 Python 做数据ETL,生成标准化的中间Excel或CSV。

  • 用 VBA 做最终的PPT刷新(因为VBA更新图表格式最好)。

  • 或者,用 Python 生成PPT后,用 VBA 做最后的格式微调(通过COM调用)。


六、交付物清单与后续优化

一个完整的自动化方案,交付给同事或客户时,应包含以下文件:

  1. PPT模板(template.pptx):已设计好版式,关键形状已命名。

  2. 生成脚本/宏:

    • Python版:generate_ppt.py+ requirements.txt

    • VBA版:ppt_macro.bas(可导入PPT)

  3. 指标页示例:一份生成的样例PPT,用于演示效果。

  4. 使用说明:如何配置数据源路径、如何运行脚本/宏、如何修改模板。

后续优化方向:

  • 增加日志功能,记录每次生成的数据和时间。

  • 加入异常处理和邮件通知(Python可使用smtplib)。

  • 开发简单的GUI界面(如tkinter或PyQt),让非技术人员也能使用。

  • 将Python脚本部署为Web服务,通过浏览器触发生成。


七、自测选择题(答案见文末)

为了检验你对本文内容的理解,请完成以下5道选择题:

  1. 在以下场景中,最适合使用Python自动化生成PPT的是:

    A. 在现有PPT模板中更新本周数据,且图表格式必须完全一致

    B. 需要为20个销售区域各生成一份定制化的周报PPT

    C. 只需在PPT中修改几个文本框的内容

    D. 公司电脑禁止安装任何外部软件

  2. 关于python-pptx库,下列说法正确的是:

    A. 它可以直接修改PPT中现有图表的底层数据而无需重新创建

    B. 它只能通过插入图片的方式添加图表

    C. 它支持读取PPT模板中的占位符并替换文本

    D. 它只能在Windows系统上运行

  3. VBA方案中,更新PPT图表数据的关键对象是:

    A. PowerPoint.Chart

    B. ChartData

    C. Shape.Fill

    D. TextFrame

  4. 使用Python的matplotlib生成图表插入PPT时,为了保持模板中的位置和大小,应该:

    A. 在PPT中预先放置一个占位符图片,并获取其left, top, width, height,然后删除占位符并添加新图片

    B. 直接调用add_chart方法

    C. 使用python-pptx的chart模块

    D. 无法保持,只能手动调整

  5. 关于Python和VBA在PPT自动化中的对比,错误的是:

    A. Python适合批量生成多份PPT,VBA适合单文件模板刷新

    B. VBA可以直接更新PPT原生图表,格式保持更好

    C. Python的数据处理能力远强于VBA

    D. VBA可以轻松跨平台运行在macOS和Linux上


答案

  1. B

    Python擅长批量生成不同内容的文件,而VBA在单文件内刷新更有优势。

  2. C

    python-pptx可以读取模板中的占位符(通过placeholder_format或形状名称)并替换文本;它也可以操作原生图表(通过chart模块),但不如VBA直接;它跨平台;插入图片是常见方式之一,但不是唯一。

  3. B

    ChartData对象代表图表的数据表,通过修改它可以更新图表数据。

  4. A

    这是保持格式的最佳实践:在模板中放一个占位符图片,代码中获取其位置和大小,然后替换为生成的图表图片。

  5. D

    VBA是Office内置的,主要运行在Windows上,macOS支持有限,不能跨Linux。


写在最后:自动化不是一蹴而就的,但每解决一个重复劳动的场景,你就能多出一小时喝咖啡的时间。希望这一讲能成为你职场效率升级的垫脚石。如果有任何问题,欢迎在评论区交流。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-11-10 12:21:23 HTTP/1.1 GET : http://h.sjds.net/a/563316.html
  2. 运行时间 : 0.077383s [ 吞吐率:12.92req/s ] 内存消耗:4,280.41kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0898d5dcb7c96b74e835284ebbd34b8b
  1. /www/wwwroot/h.sjds.net/public/index.php ( 0.79 KB )
  2. /www/wwwroot/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /www/wwwroot/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /www/wwwroot/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /www/wwwroot/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /www/wwwroot/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /www/wwwroot/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /www/wwwroot/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /www/wwwroot/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /www/wwwroot/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /www/wwwroot/h.sjds.net/app/common.php ( 0.03 KB )
  27. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /www/wwwroot/h.sjds.net/config/app.php ( 0.95 KB )
  30. /www/wwwroot/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /www/wwwroot/h.sjds.net/config/console.php ( 0.23 KB )
  32. /www/wwwroot/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /www/wwwroot/h.sjds.net/config/database.php ( 2.48 KB )
  34. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /www/wwwroot/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /www/wwwroot/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /www/wwwroot/h.sjds.net/config/log.php ( 1.35 KB )
  38. /www/wwwroot/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /www/wwwroot/h.sjds.net/config/route.php ( 1.89 KB )
  40. /www/wwwroot/h.sjds.net/config/session.php ( 0.57 KB )
  41. /www/wwwroot/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /www/wwwroot/h.sjds.net/config/view.php ( 0.82 KB )
  43. /www/wwwroot/h.sjds.net/app/event.php ( 0.25 KB )
  44. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /www/wwwroot/h.sjds.net/app/service.php ( 0.13 KB )
  46. /www/wwwroot/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /www/wwwroot/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /www/wwwroot/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /www/wwwroot/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /www/wwwroot/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /www/wwwroot/h.sjds.net/route/app.php ( 1.72 KB )
  100. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /www/wwwroot/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /www/wwwroot/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /www/wwwroot/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /www/wwwroot/h.sjds.net/runtime/temp/c1d6e8c94b2c2fa10e259903674c804d.php ( 8.11 KB )
  140. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000671s ] mysql:host=172.18.0.4;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001093s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000407s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000379s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000549s ]
  6. SELECT * FROM `set` [ RunTime:0.000301s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000724s ]
  8. SELECT * FROM `article` WHERE `id` = 563316 LIMIT 1 [ RunTime:0.000408s ]
  9. UPDATE `article` SET `lasttime` = 1794284483 WHERE `id` = 563316 [ RunTime:0.002302s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000357s ]
  11. SELECT * FROM `article` WHERE `id` < 563316 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000406s ]
  12. SELECT * FROM `article` WHERE `id` > 563316 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000374s ]
  13. SELECT * FROM `article` WHERE `id` < 563316 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000426s ]
  14. SELECT * FROM `article` WHERE `id` < 563316 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000628s ]
  15. SELECT * FROM `article` WHERE `id` < 563316 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000478s ]
0.087440s