乐于分享
好东西不私藏

VBA和Python 如何使己有的Office应用程序自动化

VBA和Python 如何使己有的Office应用程序自动化

aliases:

  • |- VBA 和Python 如何使己有的Office应用程序自动化

如何用VBA和Python实现Excel、Word等应用程序的自动化?

提供VBA对象模型、Python库(openpyxl、python-docx)以及两者对比的详细资料。可以围绕提到的Excel和Word,从VBA和Python两个方向来组织回答。先分别解析它们的工作原理、对象模型结构,再通过具体案例对比展示实现方式,最后总结各自的适用场景和选择依据。

要让已有的 Office 应用程序(如 Excel、Word)实现自动化,最主流的两种技术路径是 VBA(Visual Basic for Applications) 和 Python + 第三方库。它们的工作原理、底层机制和项目组织方式有本质区别。下面我从这几个维度,用通俗的案例帮你把它们的底层逻辑拆解透彻。


一、VBA 自动化:住在 Excel/Word 肚子里的"管家"

1. 工作原理:对象模型 + COM 组件 + 事件驱动

VBA 是微软直接嵌入在 Office 应用中的编程语言,它就像是一个住在 Excel 或 Word "肚子"里的智能管家。

它的核心工作机制依赖三个层次:

  • 宿主对象模型(Object Model)
    :Excel/Word 把自身的每一个组成部分(工作簿、工作表、单元格、段落、文字等)都向外暴露成"对象",VBA 可以直接访问这些对象。
  • COM(组件对象模型)
    :VBA 通过 COM 接口与宿主应用通信。这是一种微软的标准协议,让 VBA 能够调用 Excel/Word 的内部功能。脚本引擎通过 IDispatch 接口获取方法 ID 并执行调用,事件则通过 IConnectionPoint 机制连接到脚本函数。
  • 事件驱动
    :你可以在 VBA 中编写事件处理程序,比如"当用户打开工作簿时,自动执行某段代码",这正是因为 VBA 能够监听宿主应用的事件。

通俗理解:VBA 就是 Excel 自带的"内置大脑",它能直接操控 Excel 里的所有东西,不需要打开任何额外的程序或窗口。你告诉它"把 A1 单元格改成红色",它直接走进 Excel 的"内部控制室"就改好了。

2. 对象模型:层层递进的"树状结构"

Excel 和 Word 的对象模型是一个自上而下的层级树状结构。顶层是 Application 对象(代表应用程序本身),逐级向下包含更具体的对象。

Excel 对象模型的核心层级

Application(Excel应用程序本身)    └── Workbooks(所有打开的工作簿的集合)            └── Workbook(单个工作簿)                    └── Worksheets(工作表的集合)                            └── Worksheet(单个工作表)                                    └── Range(单元格或单元格区域)

Application 对象位于顶层,Workbooks 集合管理所有打开的工作簿,每个 Workbook 包含 Worksheets 集合,而 Range 则是最常用的操作对象,代表单元格或单元格区域。

Word 对象模型的核心层级

Application(Word应用程序本身)    └── Documents(所有打开文档的集合)            └── Document(单个文档)                    ├── Paragraphs(段落集合)                    ├── Sentences(句子集合)                    ├── Words(单词集合)                    ├── Characters(字符集合)                    └── Range(文档中的连续区域)

在 Word 中,Document 对象处于中心位置,几乎所有的操作都要调用它。文档本身是由字符、单词、句子和段落组成的集合,每个 Document 对象都有对应的四个集合。

引用对象时,VBA 使用链式点语法,像写地址一样从大到小逐级定位:

' Excel 中引用 A1 单元格的完整路径Application.Workbooks("销售数据.xlsx").Worksheets("Sheet1").Range("A1")

如果当前已经打开了目标工作簿和工作表,前面的部分可以省略,直接写成 Range("A1")

3. 项目组织结构

一个 Excel VBA 项目(.xlsm 文件)本质上是一个 ZIP 压缩包,内部包含:

ExcelMacroProject/├── xl/│   ├── workbook.xml          # 工作簿结构定义│   ├── worksheets/           # 各个工作表数据│   ├── _rels/                # 关系定义文件│   └── vbaProject.bin        # 编译后的 VBA 代码(核心)├── docProps/                 # 文档属性└── [Content_Types].xml       # 内容类型声明

VBA 代码本身存储在 vbaProject.bin 文件中,这是编译后的二进制格式。在 VBA 编辑器中,你看到的是模块化的代码组织结构,包含:标准模块(存放通用过程和函数)、类模块(定义自定义对象)、工作表/工作簿模块(存放事件处理代码)和窗体(自定义用户界面)。

4. 案例:用 VBA 自动生成销售报表

场景:每天从原始数据表生成一份格式化的销售日报,包含合计金额、前五名产品等。

Sub 生成销售日报()    ' 关闭屏幕更新以提升运行速度    Application.ScreenUpdating = False    Dim 源表 As Worksheet, 报表 As Worksheet    Dim 数据区域 As Range    Dim 合计金额 As Double    ' 引用对象(当前工作簿,省略了 Application.Workbooks)    Set 源表 = Worksheets("原始数据")    ' 创建新工作表作为报表    Set 报表 = Worksheets.Add(After:=Worksheets(Worksheets.Count))    报表.Name = "销售日报_" & Format(Date, "yyyymmdd")    ' 计算合计金额    合计金额 = WorksheetFunction.Sum(源表.Range("E2:E1000"))    ' 写入报表内容    With 报表        .Range("A1").Value = "销售日报"        .Range("A1").Font.Bold = True        .Range("A1").Font.Size = 16        .Range("A2").Value = "日期: " & Date        .Range("A3").Value = "合计销售额: "        .Range("B3").Value = 合计金额        .Range("B3").NumberFormat = "¥#,##0.00"    End With    Application.ScreenUpdating = True    MsgBox "报表生成完成!"End Sub

关键机制解析

  • 通过对象模型的层级定位到目标工作表(Worksheets("原始数据")
  • 使用 WorksheetFunction 调用 Excel 内置函数
  • 使用 With 语句简化对同一对象的多次操作,提升代码效率
  • 关闭 ScreenUpdating 属性来提升性能,这是 VBA 优化的重要技巧

二、Python 自动化:从外部操控文件的"远程操作员"

1. 工作原理:解析 Office 文件格式

Python 不像 VBA 那样住在 Office 应用内部,它走的是完全不同的路径——直接解析 Office 文件的底层格式

现代 Office 文件(.xlsx、.docx)本质上是 OpenXML 格式的 ZIP 压缩包。Python 库的核心工作流程是:

  • 加载
    :读取 ZIP 压缩包,解析其中的 XML 文件,在内存中重建文档结构。
  • 操作
    :在内存中对数据进行增删改。
  • 保存
    :将修改后的数据重新打包成 ZIP,写回文件。

以 openpyxl 为例,其整体逻辑为:首先通过打开或创建的方法实例化工作簿(Workbook 类),接着实例化工作表(Worksheet 类),然后定位到单元格执行操作,最后将操作结果存入文件。

对于 .xlsx 文件,内部结构大致如下:

  • xl/workbook.xml
    :工作簿的整体结构定义
  • xl/worksheets/sheet1.xml
    :第一个工作表的所有数据和格式
  • xl/styles.xml
    :所有单元格样式定义
  • xl/sharedStrings.xml
    :共享字符串表(Excel 把重复出现的字符串统一存在这里以节省空间)

openpyxl 通过解析这些 XML 文件来读写 Excel 内容。

⚠️ 重点区分:openpyxl vs win32com

openpyxl不依赖 Excel 软件本身,它直接操作文件。这意味着:① 可以在没有安装 Office 的服务器(如 Linux)上运行;② 速度更快,因为不启动 Excel 进程;③ 但功能受限,无法执行"另存为 PDF""刷新数据透视表"等需要 Excel 引擎才能完成的操作。

如果你需要 Python 调用 Excel 的完整功能,可以用 win32com 库,它通过 COM 接口像 VBA 一样直接控制 Excel 应用程序,但这种方式必须在 Windows 上且安装了 Excel 才能运行。

2. 对象模型:库自建的"模拟结构"

Python 库也会提供一套类似 VBA 的对象模型,但这套模型是库作者自己实现的,不是微软原生的。

openpyxl 的核心结构

Workbook(工作簿对象)    └── Worksheet(工作表对象)            └── Cell(单元格对象)

python-docx 的核心结构(三层结构是理解它的关键):

Word 文档的文本分为三层:

Document(整个文档)    └── Paragraph(段落)            └── Run(文本块,承载实际文字和格式)

为什么需要 Run 这个概念?因为一个段落里可能有多种格式。比如"这是加粗的文字"这句话,实际上被分成了三个 Run:第一个 Run 是"这是",第二个 Run 是"加粗"(带加粗属性),第三个 Run 是"的文字"。每个 Run 可以单独设置字体、大小、颜色。理解这个结构,才能正确修改格式——必须找到对应的 Run,而不是直接改段落。

3. 项目组织结构

一个典型的 Python Office 自动化项目结构如下:

office_automation/├── main.py                 # 主入口脚本├── excel_handler.py        # Excel 处理模块├── word_handler.py         # Word 处理模块├── utils.py                # 通用工具函数├── templates/              # 模板文件目录│   ├── 报表模板.xlsx│   └── 合同模板.docx├── data/                   # 原始数据目录│   └── sales_data.csv├── output/                 # 输出目录│   └── 生成报表_20260415.xlsx├── requirements.txt        # 依赖库清单└── config.yaml             # 配置文件

这种模块化的组织方式使得项目易于维护和扩展,也便于团队协作。可以设计 Excel 处理模块、Word 处理模块,通过主入口脚本串联业务流程。

4. 案例:用 Python 自动生成销售报表

同样以销售报表为例,用 Python + openpyxl 实现:

from openpyxl import load_workbookfrom openpyxl.styles import Font, Alignmentfrom openpyxl.utils import get_column_letterfrom datetime import datetime# 1. 加载工作簿(解析 ZIP 中的 XML)wb = load_workbook('销售数据.xlsx')源表 = wb['原始数据']# 2. 读取数据并计算销售数据 = []for row in range(2, 源表.max_row + 1):    if 源表.cell(row, 5).value:  # 第5列是销售额        销售数据.append(源表.cell(row, 5).value)合计金额 = sum(销售数据)# 3. 创建新工作表报表 = wb.create_sheet(f"销售日报_{datetime.now().strftime('%Y%m%d')}")# 4. 写入报表内容报表['A1'] = '销售日报'报表['A1'].font = Font(bold=True, size=16)报表['A2'] = f'日期: {datetime.now().strftime("%Y-%m-%d")}'报表['A3'] = '合计销售额: '报表['B3'] = 合计金额报表['B3'].number_format = '¥#,##0.00'# 5. 调整列宽报表.column_dimensions['A'].width = 20报表.column_dimensions['B'].width = 15# 6. 保存文件(重新打包 ZIP)wb.save(f'销售日报_{datetime.now().strftime("%Y%m%d")}.xlsx')

关键机制解析

  • load_workbook
     读取 .xlsx 文件,在内存中构建 Workbook 对象,所有修改都在内存中进行,最后调用 save 写回文件
  • 通过遍历 max_row 读取整列数据
  • 通过 create_sheet 创建新工作表,wb['Sheet1'] 方式直接获取已有工作表
  • 对于大型文件,openpyxl 提供只读模式read_only=True)和只写模式write_only=True),以固定或接近固定的内存消耗读写无限数据,只写模式下内存使用可控制在 10MB 以下。

三、VBA vs Python:底层差异对比

维度
VBA
Python(openpyxl / python-docx)
工作原理
通过 COM 接口操控 Office 应用程序本身
直接解析 OpenXML 文件格式
是否需要 Office
必须在已安装 Office 的环境运行
不需要 Office,可跨平台(Linux/Windows/Mac)
运行方式
嵌入在 Office 内部,由 VBA 引擎解释执行
独立 Python 进程,读取文件到内存操作
对象模型
微软原生对象模型,功能最全
库作者自行实现的模拟模型
性能
小数据量快,大数据量受限于 Office 界面渲染
无界面开销,处理大数据效率更高
学习成本
较低,可录制宏自动生成代码,与 Office 深度集成
较高,需要理解库的 API 设计
典型适用场景
个人办公自动化、简单报表、快速临时任务
批量文件处理、服务器端自动化、大数据分析

如果工作主要涉及 Excel 和 Office 自动化,VBA 是更直接的选择,因为能直接集成到 Microsoft Office 应用中,快速改善工作流程。而如果需要处理更广泛的数据分析或需要大规模生态系统,Python 则是更佳选择。


四、选择建议:什么时候用哪个?

场景
推荐方案
原因
个人快速自动化日常 Excel/Word 任务
VBA
录制宏 + 微调代码,最省事
需要生成复杂图表、数据透视表
VBA
VBA 直接操控 Excel 引擎,功能最全
需要跨平台运行(如在 Linux 服务器上)
Python + openpyxl
Python 不依赖 Office 软件
批量处理成百上千个文件
Python + openpyxl
批量处理效率远高于 VBA
需要结合数据库、Web API 等外部数据源
Python
Python 生态丰富,集成能力强
同时需要 Excel 完整功能和 Python 数据分析能力
VBA + Python 混合
Python 做数据处理,VBA 做前端交互

此外,宏录制器是理解 VBA 对象模型的绝佳工具——在 Excel 中执行操作并录制宏,然后查看生成的 VBA 代码,就能快速学会如何用代码操控各种对象。


你目前的自动化需求更偏向哪种场景?是个人日常办公的快速自动化,还是需要批量处理大量文件?请进一步关注后面的课题。

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