当前位置:首页>Excel>Excel-DNA Skill 终极形态:一个插件,拿下 .NET 全生态 + Office 全组件 + 前端全家桶

Excel-DNA Skill 终极形态:一个插件,拿下 .NET 全生态 + Office 全组件 + 前端全家桶

  • 2026-07-12 12:31:36
Excel-DNA Skill 终极形态:一个插件,拿下 .NET 全生态 + Office 全组件 + 前端全家桶
当 Excel 插件遇上 SAP:我把大集团财务分析的"灵魂能力"搬进了 Excel-DNA Skill
上次发完推文后,我又干了两天两夜——这套 ExcelDNA Skill 已经从"工具"变成"武器库"
我十年 Office 开发的终极大招:一个 Skill,让 AI 帮你做出最专业的 Excel 插件

前两篇推文发完,很多人私信我:"你那个 Excel-DNA Skill 到底能做什么?" 我当时的回答是 7 套蓝图、26 篇参考文档、.NET 全栈 + VBA 精华 + 浏览器集成。但那是上一版的答案。这一次,我给它加了两个"核弹级"的能力——Open XML 文件级批量读写和报表自动化引擎。现在的答案是:你在这个平台上能做的事情,比任何一个独立的软件系统都多,而且性能完全不输给服务端原生 .NET 程序。


一、先给你一个结论,免得你翻到最后才看懂

如果你只有 30 秒看这篇文章,请只看这一段:

Excel-DNA 项目已经不再是一个"给 Excel 写写插件"的工具。它已经进化成一个全能型的 .NET 应用平台——你可以用最新 .NET 的所有库、以服务端级别的性能直接读写 Excel 文件、用 WebView2 跑完整前端应用、用 MiniWord 生成 Word 文档、用 Magicodes.IE 做企业级报表模板、用 TreeCollections 做父子维度层级分析。而且这一切,都长在用户天天用的 Excel 和 WPS 里。

不需要用户学新工具、换新系统、装新软件。打开 Excel,一切都齐了。

下面我拆开讲:为什么这次升级后,这套 Skill 的"天花板"被彻底打穿了。


二、核心突破:用 Open XML 在 Excel 插件里做到服务端级别的文件读写性能

先聊这次升级里最"硬核"的部分。

2.1 以前的 Excel 插件读写数据有多慢?

做过 VBA 和 VSTO 的人都知道一个痛点:COM 接口逐格读写 Excel 数据,慢得要命。

你写一个循环,遍历 5000 行 × 18 列的数据区域,逐格设置背景色、字体、数字格式——在 VBA 里可能卡几十秒,在 VSTO 的 C# 里用 COM 接口也好不到哪去。为什么?因为每一次 Range.Interior.Color = xxx 都是一次跨进程 COM 调用。Excel 进程和你的插件进程之间来回跑,5000 × 18 = 90000 次往返,神仙也扛不住。

你可能会说:"用 Range.Value2 一把读、一把写不就好了?"

是的,对于纯数据,批量数组读写可以解决。但如果你要做的是大面积格式调整、批量样式复制、模板离线填充、长编号列统一改文本格式——这些操作涉及的不是数据,而是样式对象、格式属性,光靠 Value2 搞不定。你最终还是得回到 COM 逐格操作的老路上。

这就是 Excel 插件开发里一个长期没有被很好解决的问题:重格式、重结构的批量操作,怎么才能不依赖 COM 往返?

2.2 答案:Office Open XML,直接改文件包

这次我在 Skill 里新增了一个完整的专项蓝图——wps-openxml-workbook-bulk-io,专门解决这个问题。

核心思路非常简单:不要通过 COM 操作 Excel 界面对象,而是直接把 xlsx 文件当成一个 ZIP 包,用 Open XML SDK 在文件层读写。

原理是这样的:一个 .xlsx 文件本质上就是一个 ZIP 压缩包,里面有一堆 XML 文件——xl/styles.xml 管样式、xl/worksheets/sheet1.xml 管单元格数据、xl/sharedStrings.xml 管字符串池。你用 Open XML SDK 打开这个包,直接改这些 XML,然后保存——整个过程不经过 Excel COM 接口,没有任何跨进程开销。

这意味着什么?你的 Excel 插件读写文件的速度,跟一个后端服务在服务器上用 .NET 处理 xlsx 文件的速度完全一样。因为根本就没有"Excel 插件慢"这回事了——你是在文件层直接操作,Excel 只是一个"打开结果文件"的查看器。

2.3 性能对比:这是一次降维打击

操作场景
VBA / VSTO COM 逐格操作
Excel-DNA + Open XML 文件级批处理
对 5000 行 × 18 列大范围套样式
逐格 COM 调用,几十秒到几分钟
直接改 styles.xml + sheet.xml,毫秒到秒级
把长编号列统一改文本格式
逐格 NumberFormat = "@"
一次改 XML 属性
从模板复制样式到新文件
COM 逐对象 Copy
XML 节点级深拷贝
批量改列宽、行高、冻结窗格
COM 逐属性设置
一次改 sheet.xml 和 workbook.xml
读取 CustomXmlPart 元数据
COM 逐节点遍历
直接用 LINQ to XML 查

不是一个数量级。Open XML 比 COM 快了几十倍甚至上百倍。

这不是猜测,是我在真实项目里验证过的。在 Skill 里,我专门写了一个叫 OfflineWorkbookEditSession 的 helper 类,完整演示了"关闭工作簿 → 离线 Open XML 批处理 → 重新打开"的标准模式。你只需要调用一个方法,Skill 自动帮你完成全部流程。

更重要的是,我跟那些专业程序员在服务端写的东西,性能是完全一样的。区别只在于——他们写的是一个没有界面的批处理程序,你写的是一个长在 Excel 里的插件,用户可以直接交互。


三、不止 Open XML——四套文件级方案,按需选择

Open XML SDK 很强大,但它不是万能的。对于纯数据读取、轻量报表导出这类场景,直接用底层 XML 操作太"重"了,开发效率不高。

所以我在这个蓝图里把四个主流 .NET 文件级库全部内置了,并给 AI 写了详细的选型文档(references/24-openxml-workbook-bulk-io.md):

方案
适合什么
不适合什么
Open XML SDK
大面积样式复制、包级结构控制、模板离线修正
快速写业务逻辑时上手成本高
MiniExcel
轻量读取、低内存遍历、快速多 Sheet 导出
复杂样式治理、精细格式控制
ClosedXML
开发体验友好、代码式表格操作
极限性能、底层包结构控制
EPPlus
非商业个人研究、表格 API 体验好
商业项目有许可限制

一个 Excel 插件里同时集成了四套文件级读写方案,这是 VBA 和 VSTO 完全不可能做到的事。 因为 VBA 只能用 COM,VSTO 虽然能用 .NET 但受限于老框架和部署复杂度。而 Excel-DNA + .NET 6/8,你可以任意组合这些库,想用哪个用哪个。


四、既然能改文件包了,那报表自动化就水到渠成

Open XML 打开了"文件级直接读写"的大门。顺势而为,我把报表自动化也做进了 Skill——新增了 wps-report-automation 蓝图和三篇专项参考文档(references/26-report-automation-libraries-and-scenarios.mdreferences/27-report-template-design-and-implementation.md)。

4.1 Excel 模板报表:让业务同学自己调样式

传统的 Excel 报表开发是这样的:程序员在代码里逐格设置样式、填数据、调格式——业务方说"这个表头颜色调深一点""这个列宽不够",程序员就得改代码、重新编译、重新部署。

我用 Magicodes.IE + MiniExcel 做的方案完全不一样:

模板和代码分离。 业务同学在 Excel 里设计模板——调颜色、设列宽、写公式、套表格样式。模板里只需要用 {{变量名}} 标记占位符。代码只负责准备数据和调用一行 ExportByTemplate

业务说"表头颜色深一点"?直接在模板 xlsx 里改,不用动一行代码。这就是真正的"业务驱动"。

4.2 Word 报表?MiniWord 直接在 Excel 插件里生成 docx

更有意思的是——你的 Excel 插件现在还能生成 Word 文档。

用 MiniWord,你可以在 xlsx 模板旁边再配一个 docx 模板。用户点一个 Ribbon 按钮,插件读取 Excel 里的数据,填入 Word 模板,生成一份排版精美的通知单、说明书、报价函、会议纪要。保存到指定目录,直接发人。

不需要打开 Word,不需要安装 Word 插件——你的 Excel 插件,就是一个全能的 Office 文档生成器。

这才是真正的"Office 全组件调用":宿主是 Excel,但产物可以是 xlsx,也可以是 docx。代码统一用 C# 写,模板统一让业务维护。


五、.NET 全生态 + 前端全生态 = 无限的可能性

写到这,我想把整个 Skill 的能力版图用一张表画出来。你会看到一个普通用户用 Excel 打开一个插件,背后能调动多少东西:

📂 Office 原生能力

能力
实现方式
Excel 自定义函数(UDF)
Excel-DNA,同步/异步/RTD 流式/动态数组
Ribbon 功能区菜单
XML + COM 回调,Excel/WPS 双宿主
CTP 任务窗格
WPF + HandyControl 精美界面
Excel COM 对象模型
工作表、选区、图表、ListObject 全操控
Word 文档生成
MiniWord,docx 模板填充 + 表格 + 图片
WPS 个人版深度兼容
白名单、固定 ProgId/Guid、异步兜底

📦 .NET 全生态

能力
实现方式
Open XML SDK 文件级读写
服务端级性能,直接改 xlsx 文件包
MiniExcel 轻量读写
低内存、高性能流式处理
ClosedXML 代码式表格操作
开发体验友好,像操作对象模型一样写表格
Magicodes.IE 报表引擎
DTO 特性导出 + 模板报表 + 导入模板 + 回读校验
TreeCollections 层级树
组织架构树、父子维度分析、层级汇总
HttpClient + REST API
对接任意后端服务、AI 模型、第三方平台
SQLite / SQL Server
本地数据库,离线可用
System.Text.Json
高性能 JSON 序列化
多线程并行计算
Task
async/awaitSemaphoreSlim 并发控制
Windows API(P/Invoke)
注册表、文件系统、进程管理

🌐 前端全生态

能力
实现方式
WebView2(Chromium 内核)
在 Excel 侧边栏跑完整网页应用
Vue / React / Angular
任何前端框架都能嵌入 CTP 窗格
HandyControl WPF 控件库
36 原生 + 87 扩展控件,商业级 UI
7 色主题 + 深色/浅色切换
全局品牌色一键更换
前端图表库(ECharts 等)
在 WebView2 里渲染,数据来自 Excel

看完这张表,你应该理解我为什么说这是一个"全能型选手"了。 它把三个世界的生态全部打通了——Office 的编程接口、.NET 的现代化语言和库、前端的所有框架和组件——全部在一个 Excel 插件里可以同时使用。

独立软件开发?你有 .NET 全生态。 Web 系统开发?你有 WebView2 跑完整前端。 Office 自动化?你有 COM 对象模型 + Open XML 文件级批处理。 报表系统?你有 Magicodes.IE 模板引擎 + MiniWord Word 输出。 数据分析?你有 TreeCollections 层级树 + SQLite 本地数据库。

这哪是一个"Excel 插件"?这分明是一个以 Excel 为宿主操作系统的"万能应用容器"。


六、谁说 Excel 插件不如独立软件?结论可能恰恰相反

写到这里,我想正面回应一个在 Office 开发圈里长期存在的偏见。

很多专业程序员——特别是做后端和 Web 的——天然看不起 Excel 插件开发。在他们眼里,VBA 是"上个世纪的脚本语言",VSTO 是"微软自己都快放弃的老技术",Excel 插件嘛,就是"给财务阿姨写写宏"。

大错特错。

6.1 高级企业如果追求用户体验,通常以 Excel 插件的方式输出能力

我在前两篇文章里讲过 SAP 的例子——世界五百强趋之若鹜的企业软件巨头,在 Excel 上倾注了几十年的研发资源,做出了 EPM 和 AO 两个重量级 Excel 插件,说明书各有几百页。

SAP 的底层逻辑非常简单:财务用户的天堂不是花里胡哨的可视化大屏,而是一个能跟 Excel 深度融合的数据工具。 用户不需要离开 Excel,不需要学新系统,所有的能力长在他们最熟悉的工具上。

同样的逻辑可以推广到任何一个垂直领域:

  • 供应链管理?你把 MRP 运算、库存预警、采购建议做进 Excel 插件。
  • 人力资源管理?你把排班表、考勤统计、薪酬计算做进 Excel 插件。
  • 科研数据分析?你把统计模型、图表渲染、论文级输出做进 Excel 插件。
  • 金融量化交易?你把实时行情、策略回测、风控指标做进 Excel 插件。

这些需求的共同点是:最终用户的工作流天然就在 Excel 里。你做一个独立系统让他们"迁移过去",是逆人性;你把能力"长进 Excel 里",是顺人性。

6.2 Excel-DNA 项目与独立软件 / Web 系统相比,并不逊色

现在,加上 Open XML 文件级读写、Magicodes.IE 报表引擎、MiniWord Word 输出、WebView2 前端集成这些能力之后,Excel-DNA 项目跟传统独立软件对比,结论可能不是"各有优劣",而是全面碾压

对比维度
独立软件 / Web 系统
Excel-DNA 插件
用户安装成本
下载安装包、配置环境、注册账号
双击 bat 脚本,打开 Excel 就能用
用户学习成本
学新界面、新操作逻辑、新概念
在 Excel 里操作,零学习成本
数据读写性能
服务端 .NET 原生性能
同等性能
(Open XML 文件级读写)
.NET 生态库
全部可用
全部可用(同一个 .NET 运行时)
前端生态
浏览器里跑
WebView2 里跑(同一个 Chromium)
Office 集成
需要导出/导入,格式可能丢失
原生 Excel 格式,零转换损耗
离线使用
看架构设计
完全支持(本地 .NET 运行时)
代码保护
看部署方式
编译成 DLL,反编译难度远大于 VBA
分发难度
安装包 + 环境配置
一个 bat 文件,自动检测 Office 位数

你看,Excel-DNA 项目在"用户触达"这个维度上,对独立软件是降维打击——因为用户本来就天天用 Excel,你不需要把他们拉到另一个地方去。而在性能和能力上,它跟独立软件完全对等,因为底层就是完整 .NET。


七、异常数据处理、数据整合、批量操作——这才是 Excel-DNA 的王牌场景

最后,我想特别讲一个 Excel-DNA 最擅长的领域:ETL 级的数据处理,直接在 Excel 里完成。

在实际业务中,大量的"脏活累活"都发生在数据层面:

  • 从多个系统导出 CSV/Excel,格式各不相同,需要整合成一张标准表
  • 长编号列(如身份证号、银行卡号、物料编码)被 Excel 自动转成科学计数法
  • 日期列格式五花八门——有的是 2026/7/9,有的是 20260709,有的是 44982 序列号
  • 需要根据多级组织架构做层级汇总,子公司的数据要向上合并到母公司
  • 需要批量校验数据完整性——缺失值、异常值、逻辑矛盾

VBA 做这些事,写起来痛苦,跑起来更痛苦——数据量一大就卡死。VSTO 也好不到哪去——逐格 COM 操作,性能天花板就在那。Power Query 能做一部分,但复杂的逻辑和条件判断写 M 语言,业务人员根本搞不定。

而 Excel-DNA 的方案是:

1. Open XML / MiniExcel 一把读取——不用 COM,直接从文件层秒读全部数据

2. .NET 内存中清洗和转换——长编号加文本前缀、日期统一格式化、缺失值填充、异常值标记

3. TreeCollections 层级汇总——组织架构树、科目树、成本中心树,一键 DIM_BUILD + FACT_AGG

4. Magicodes.IE / MiniExcel 整块输出——清洗后的数据一把写入新文件,保留列格式、列宽、冻结窗格

整个过程,用户看到的是一个 Ribbon 按钮。点一下,几分钟的活几秒钟搞定。后台跑的是 C# 静态编译的原生代码,没有 COM 往返,没有 VBA 解释执行的开销。

这就是我说的——超越大家过往对 VSTO 和 VBA 开发的全部认知。 不是"比它们好一点",而是"根本不在一个世代"。


八、极致的交互体验:性能上去了,体验没下来

有些纯服务端的方案也能做到高性能文件处理——比如写一个 .NET 控制台程序,用户把 xlsx 文件拖进去,处理完输出一个新文件。

但这种方案有一个致命缺陷:用户交互体验为零。 用户看不到处理进度,不能中途调整参数,不能预览结果,不能在处理完成后直接在 Excel 里做进一步编辑。

Excel-DNA 的方案是:性能跟服务端一样,但交互体验是 Excel 原生的。

  • 用户在当前打开的 Excel 工作簿里点一个按钮
  • 插件在后台用 Open XML 处理文件副本
  • 处理完成后,自动在 Excel 里打开结果文件
  • 用户看到的是一份格式完美、数据正确的 xlsx,可以直接编辑、打印、分享、发邮件
  • 如果想调整参数,改一个单元格的值,再点一次按钮——新的结果立刻出来

需要更复杂的交互?可以弹一个 WPF 对话框让用户选择处理选项。需要预览效果?可以在 CTP 任务窗格里嵌一个 WebView2 数据预览面板。需要在处理前做数据校验?可以在内存里跑校验规则,不通过的直接在 Excel 单元格里标红。

这就是 Excel-DNA 方案最独特的地方:它不是"高性能 + 差体验",也不是"好体验 + 低性能",而是两者兼得。而且因为能力全部来自 .NET 生态和前端生态,可扩展性几乎没有上限。


九、从写插件到做平台——这套 Skill 现在的真正定位

回看过去三篇文章,你能看到一个清晰的进化轨迹:

  • **第一篇(入门篇)**:展示 Excel-DNA 的基础能力——UDF 函数、Ribbon 菜单、CTP 任务窗格、HandyControl 界面、WPS 深度适配。让人们知道 VBA/VSTO 之外还有更好的选择。
  • **第二篇(实战篇)**:用真实 SAP 项目案例展示 Excel-DNA 的工业级能力——父子维度树、层级汇总、TreeCollections + 内存对象的极致性能。
  • **第三篇(迭代篇)**:从 2 套蓝图扩展到 7+ 套,从基础工具变成"三个世界的交汇点"——.NET 全栈 + VBA 精华 + 浏览器集成。
  • **这一篇(全能篇)**:Open XML 文件级读写 + 报表自动化引擎 + Word 文档生成,把天花板彻底打穿——Excel-DNA 不再是一个"插件开发框架",它是一个以 Office 为宿主的全能应用平台。

现在的 Skill,已经包含了 9+ 套蓝图模板、30+ 篇参考文档、5 组自动化脚本。从最小 UDF 函数到全功能工作台,从文件级批处理到模板化报表引擎,从 WPF 桌面界面到 WebView2 网页面板——全部覆盖。

而驱动这一切的,就是用户的一句话。


十、免费,欢迎打赏

这是我的铁原则,从第一套 VBA Skill 到现在,一个字没变过:

高质量的东西不一定要收费。

从 VBA 到 Python 到 .NET 到飞书/WPS 多维表格到浏览器插件到图标到 Excel-DNA——全部免费开放。

不收割韭菜,不贩卖焦虑,不搞知识付费墙。

遇到我就是缘分。你觉得这些分享对你有帮助,随喜打赏——没有固定金额,不设付费墙。 打赏是一种认可,不是入场券。

也欢迎加我好友,进入免费社群。 在群里你可以分享使用 Skill 的经验心得,提出你想做的插件创意,看到其他群友的实战案例相互启发。


写在最后

十年前,我第一次给 Excel 写 VBA 宏的时候,只觉得"能让 Excel 多做一点事"就很满足了。

现在我回头看,Excel-DNA 这个平台能做的事,已经远远超过了任何一个独立的 VBA 项目、VSTO 项目、甚至很多独立的 Web 系统的能力边界。不是因为它写了多少行代码,而是因为它打通了三个世界——.NET 的全生态、Office 的全组件、前端的全框架——让一个普通用户在 Excel 里就能同时拥有所有这些能力。

从 VBA 到 VSTO 到 Excel-DNA,从 COM 批量读写到 Open XML 文件级批处理,从手写 Ribbon XML 到 AI 自动生成完整插件项目——这条路我走了十年。

而今天,我把这条路铺平了,放在了这套 Skill 里。

我的目标很简单:让每一个用 Office 的人,都能在自己的 Excel 和 WPS 上,长出自己想要的任何功能。而且长得比那些花几万块定制的商业插件还漂亮,跑得比服务端程序还快,用得比独立软件还顺手。

可以开始玩了。

公众号:Excel催化剂 | 微信:190262897 | 承接数据咨询解决方案、软件功能定制、AI编程培训服务

想体验全套 Excel-DNA Skill(含 Open XML 批量读写 + 报表自动化引擎)?欢迎加好友进入免费社群获取。

最新文章

随机文章

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