当前位置:首页>Excel>.NET 开发的 Excel 神器:让对象与表格双向映射如丝般顺滑

.NET 开发的 Excel 神器:让对象与表格双向映射如丝般顺滑

  • 2026-05-20 23:16:08
.NET 开发的 Excel 神器:让对象与表格双向映射如丝般顺滑

前言

还在为 Excel 和 C# 对象之间的转换而头疼吗?据统计,80% 的 C# 开发在处理 Excel 数据时都遇到过这些痛点:手写繁琐的读取代码、复杂的格式转换、错误处理困难……

Install-Package Ganss.Excel

快速上手:一行代码读取 Excel

最简单的数据读取

// 仅需一行代码,Excel秒变对象集合!var products = new ExcelMapper("products.xlsx").Fetch<Product>();

核心原理:ExcelMapper 自动匹配 Excel 列名与 C# 属性名(忽略大小写),无需额外配置!

定义数据模型

publicclassProduct{    publicint id { getset; }          // 产品编号    publicstring Name { getset; }          // 产品名称    publicstring category { getset; }    // 类型     publicint qty { getset; }  // 数量    publicdecimal Price { getset; }        // 价格        [Column("创建日期")]    public DateTime createdate { getset; }  // 创建日期    publicoverridestringToString()    {        return$"{Name},{category},{Price},{qty},{createdate}";        }}

注意:对于日期类型,一定在 Excel 中设置为 datetime 格式,否则可能解析失败。

进阶技巧:灵活映射配置

自定义列名映射

[Column("价格")]publicdecimal Price { getset; }        // 价格[Column("创建日期")]public DateTime createdate { getset; }  // 创建日期

实战提醒:当 Excel 列名与属性名不一致时,[Column] 特性是最佳选择!

按列索引映射(无表头模式)

publicclassProduct{        [Column(1)]    publicint id { getset; }          // 产品编号    publicstring Name { getset; }          // 产品名称        [Column(Letter = "C")]    publicstring category { getset; }    // 类型     publicint qty { getset; }  // 数量        [Column("价格")]    publicdecimal Price { getset; }        // 价格        [Column("创建日期")]    public DateTime createdate { getset; }  // 创建日期    publicoverridestringToString()    {        return$"{id},{Name},{category},{Price},{qty},{createdate}";        }}// 设置无表头模式var products = new ExcelMapper("products.xlsx"{        HeaderRow = false}.Fetch<Product>();

代码方式灵活映射

高级特性:解决复杂场景

数据格式化

嵌套对象映射

using Ganss.Excel;using NPOI.SS.Formula.Functions;namespaceAppExcelMapper{publicclassPerson    {publicstring Name { getset; }public DateTime Birthday { getset; }public Address Address { getset; }  // 嵌套对象    }publicclassAddress    {publicstring Street { getset; }publicstring City { getset; }publicstring Zip { getset; }    }internalclassProgram    {staticvoidMain(string[] args)        {var customers = new ExcelMapper("user.xlsx").Fetch<Person>();foreach (var item in customers)            {                Console.WriteLine(item.Name + "," + item.Address.City);            }        }    }}

动态对象处理

这个比较好用了。。

数据导出:对象秒变 Excel

一键保存

模板填充(保留格式)

实战指南

以下是一个完整的工业管理示例,涵盖设备、计划、质检三大核心模块,并实现自动化报告生成:

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.Linq;using Ganss.Excel;namespaceAppExcelMapper{///<summary>/// 生产设备信息模型///</summary>publicclassProductionEquipment    {publicint Id { getset; }        [Column("设备编号")]publicstring EquipmentCode { getset; }        [Column("设备名称")]publicstring EquipmentName { getset; }        [Column("设备类型")]publicstring Type { getset; }        [Column("生产线")]publicstring ProductionLine { getset; }        [Column("运行状态")]publicstring Status { getset; }        [Column("生产效率")]        [DataFormat("0.00%")]publicdecimal Efficiency { getset; }        [Column("最后维护日期")]public DateTime LastMaintenanceDate { getset; }        [Column("下次维护日期")]public DateTime NextMaintenanceDate { getset; }        [Column("设备价值")]        [DataFormat("¥#,##0.00")]publicdecimal Value { getset; }publicoverridestringToString()        {return$"{EquipmentCode} - {EquipmentName} [{Status}] 效率:{Efficiency:P2}";        }    }///<summary>/// 生产计划模型///</summary>publicclassProductionPlan    {        [Column("计划编号")]publicstring PlanId { getset; }        [Column("产品编码")]publicstring ProductCode { getset; }        [Column("产品名称")]publicstring ProductName { getset; }        [Column("计划数量")]publicint PlannedQuantity { getset; }        [Column("已完成数量")]publicint CompletedQuantity { getset; }        [Column("开始日期")]public DateTime StartDate { getset; }        [Column("预计完成日期")]public DateTime ExpectedEndDate { getset; }        [Column("实际完成日期")]public DateTime? ActualEndDate { getset; }        [Column("负责人")]publicstring Supervisor { getset; }        [Column("优先级")]publicstring Priority { getset; }publicoverridestringToString()        {bool IsOverdue = DateTime.Now > ExpectedEndDate && ActualEndDate == null;return$"{PlanId} - {ProductName} 进度:{(PlannedQuantity > 0 ? (decimal)CompletedQuantity / PlannedQuantity : 0):P1} " +$"{(IsOverdue ? "[已延期]" : "")}";        }    }///<summary>/// 质量检测记录模型///</summary>publicclassQualityInspection    {        [Column("检测编号")]publicstring InspectionId { getset; }        [Column("产品批次")]publicstring BatchNumber { getset; }        [Column("检测项目")]publicstring InspectionItem { getset; }        [Column("标准值")]publicdecimal StandardValue { getset; }        [Column("实测值")]publicdecimal ActualValue { getset; }        [Column("偏差")]        [DataFormat("0.000")]publicdecimal Deviation { getset; }        [Column("检测结果")]publicstring Result { getset; }        [Column("检测员")]publicstring Inspector { getset; }        [Column("检测时间")]public DateTime InspectionTime { getset; }        [Column("备注")]publicstring Remarks { getset; }publicoverridestringToString()        {return$"{InspectionId} - {InspectionItem}{Result} (偏差:{Deviation:F3})";        }    }///<summary>/// 工业生产管理服务类///</summary>publicclassIndustrialManagementService    {privatereadonlystring _dataPath;publicIndustrialManagementService(string dataPath = "Data")        {            _dataPath = dataPath;        }///<summary>/// 导入设备信息///</summary>public List<ProductionEquipment> ImportEquipmentData()        {try            {var filePath = Path.Combine(_dataPath, "设备清单.xlsx");var equipments = new ExcelMapper(filePath).Fetch<ProductionEquipment>().ToList();                Console.WriteLine($"成功导入 {equipments.Count} 条设备信息");return equipments;            }catch (Exception ex)            {                Console.WriteLine($"设备数据导入失败: {ex.Message}");returnnew List<ProductionEquipment>();            }        }///<summary>/// 导入生产计划///</summary>public List<ProductionPlan> ImportProductionPlans()        {try            {var filePath = Path.Combine(_dataPath, "生产计划.xlsx");var plans = new ExcelMapper(filePath).Fetch<ProductionPlan>().ToList();                Console.WriteLine($"成功导入 {plans.Count} 条生产计划");return plans;            }catch (Exception ex)            {                Console.WriteLine($"生产计划导入失败: {ex.Message}");returnnew List<ProductionPlan>();            }        }///<summary>/// 导入质量检测数据///</summary>public List<QualityInspection> ImportQualityInspections()        {try            {var filePath = Path.Combine(_dataPath, "质量检测.xlsx");var inspections = new ExcelMapper(filePath).Fetch<QualityInspection>().ToList();                Console.WriteLine($"成功导入 {inspections.Count} 条质量检测记录");return inspections;            }catch (Exception ex)            {                Console.WriteLine($"质量检测数据导入失败: {ex.Message}");returnnew List<QualityInspection>();            }        }///<summary>/// 生成设备维护报告///</summary>publicvoidGenerateMaintenanceReport(List<ProductionEquipment> equipments)        {try            {// 筛选需要维护的设备var maintenanceNeeded = equipments                    .Where(e => e.NextMaintenanceDate <= DateTime.Now.AddDays(7))                    .OrderBy(e => e.NextMaintenanceDate)                    .ToList();var reportPath = Path.Combine(_dataPath, $"维护计划_{DateTime.Now:yyyyMMdd}.xlsx");new ExcelMapper().Save(reportPath, maintenanceNeeded, "设备维护计划");                Console.WriteLine($"维护报告已生成: {reportPath}");                Console.WriteLine($"需要维护的设备数量: {maintenanceNeeded.Count}");            }catch (Exception ex)            {                Console.WriteLine($"维护报告生成失败: {ex.Message}");            }        }///<summary>/// 生成生产进度报告///</summary>publicvoidGenerateProgressReport(List<ProductionPlan> plans)        {try            {// 添加进度分析var progressReport = plans.Select(p => new                {                    p.PlanId,                    p.ProductName,                    p.PlannedQuantity,                    p.CompletedQuantity,                    p.Supervisor,                    p.Priority                }).ToList();var reportPath = Path.Combine(_dataPath, $"生产进度_{DateTime.Now:yyyyMMdd}.xlsx");new ExcelMapper().Save(reportPath, progressReport, "生产进度报告");                Console.WriteLine($"生产进度报告已生成: {reportPath}");            }catch (Exception ex)            {                Console.WriteLine($"生产进度报告生成失败: {ex.Message}");            }        }///<summary>/// 生成质量分析报告///</summary>publicvoidGenerateQualityReport(List<QualityInspection> inspections)        {try            {// 质量统计分析var qualityStats = inspections                    .GroupBy(i => i.InspectionItem)                    .Select(g => new                    {                        检测项目 = g.Key,                        总检测次数 = g.Count(),                        平均偏差 = g.Average(i => Math.Abs(i.Deviation)),                        最大偏差 = g.Max(i => Math.Abs(i.Deviation))                    }).ToList();var reportPath = Path.Combine(_dataPath, $"质量分析_{DateTime.Now:yyyyMMdd}.xlsx");new ExcelMapper().Save(reportPath, qualityStats, "质量统计分析");                Console.WriteLine($"质量分析报告已生成: {reportPath}");            }catch (Exception ex)            {                Console.WriteLine($"质量分析报告生成失败: {ex.Message}");            }        }///<summary>/// 创建示例数据文件///</summary>publicvoidCreateSampleDataFiles()        {try            {                Directory.CreateDirectory(_dataPath);// 创建示例设备数据var sampleEquipments = new List<ProductionEquipment>                {new ProductionEquipment                    {                        Id = 1, EquipmentCode = "EQ001", EquipmentName = "数控车床A1",                        Type = "数控设备", ProductionLine = "A线", Status = "运行中",                        Efficiency = 0.92m, LastMaintenanceDate = DateTime.Now.AddDays(-30),                        NextMaintenanceDate = DateTime.Now.AddDays(60), Value = 850000m                    },new ProductionEquipment                    {                        Id = 2, EquipmentCode = "EQ002", EquipmentName = "冲压机B1",                        Type = "冲压设备", ProductionLine = "B线", Status = "运行中",                        Efficiency = 0.88m, LastMaintenanceDate = DateTime.Now.AddDays(-45),                        NextMaintenanceDate = DateTime.Now.AddDays(5), Value = 620000m                    },new ProductionEquipment                    {                        Id = 3, EquipmentCode = "EQ003", EquipmentName = "焊接机器人C1",                        Type = "自动化设备", ProductionLine = "C线", Status = "维护中",                        Efficiency = 0.95m, LastMaintenanceDate = DateTime.Now.AddDays(-2),                        NextMaintenanceDate = DateTime.Now.AddDays(88), Value = 1200000m                    }                };new ExcelMapper().Save(Path.Combine(_dataPath, "设备清单.xlsx"), sampleEquipments, "设备信息");// 创建示例生产计划数据var samplePlans = new List<ProductionPlan>                {new ProductionPlan                    {                        PlanId = "P202401001", ProductCode = "PRD001", ProductName = "精密轴承",                        PlannedQuantity = 1000, CompletedQuantity = 850,                        StartDate = DateTime.Now.AddDays(-15), ExpectedEndDate = DateTime.Now.AddDays(5),                        Supervisor = "张工", Priority = "高"                    },new ProductionPlan                    {                        PlanId = "P202401002", ProductCode = "PRD002", ProductName = "连接器组件",                        PlannedQuantity = 2000, CompletedQuantity = 1200,                        StartDate = DateTime.Now.AddDays(-20), ExpectedEndDate = DateTime.Now.AddDays(10),                        Supervisor = "李工", Priority = "中"                    }                };new ExcelMapper().Save(Path.Combine(_dataPath, "生产计划.xlsx"), samplePlans, "生产计划");// 创建示例质量检测数据var sampleInspections = new List<QualityInspection>                {new QualityInspection                    {                        InspectionId = "QC001", BatchNumber = "B20240101", InspectionItem = "尺寸精度",                        StandardValue = 10.000m, ActualValue = 10.002m, Result = "合格",                        Inspector = "质检员A", InspectionTime = DateTime.Now.AddHours(-2)                    },new QualityInspection                    {                        InspectionId = "QC002", BatchNumber = "B20240102", InspectionItem = "表面粗糙度",                        StandardValue = 1.600m, ActualValue = 1.580m, Result = "合格",                        Inspector = "质检员B", InspectionTime = DateTime.Now.AddHours(-1)                    }                };new ExcelMapper().Save(Path.Combine(_dataPath, "质量检测.xlsx"), sampleInspections, "质量检测");                Console.WriteLine("示例数据文件创建成功!");            }catch (Exception ex)            {                Console.WriteLine($"示例数据创建失败: {ex.Message}");            }        }    }///<summary>/// 主程序入口///</summary>classProgram    {staticvoidMain(string[] args)        {            Console.WriteLine("=== 工业生产管理系统 - ExcelMapper 示例 ===\n");var service = new IndustrialManagementService();// 创建示例数据            Console.WriteLine("1. 创建示例数据文件...");            service.CreateSampleDataFiles();            Console.WriteLine();// 导入各类数据            Console.WriteLine("2. 导入设备信息...");var equipments = service.ImportEquipmentData();foreach (var equipment in equipments.Take(3))            {                Console.WriteLine($"  - {equipment}");            }            Console.WriteLine();            Console.WriteLine("3. 导入生产计划...");var plans = service.ImportProductionPlans();foreach (var plan in plans)            {                Console.WriteLine($"  - {plan}");            }            Console.WriteLine();            Console.WriteLine("4. 导入质量检测数据...");var inspections = service.ImportQualityInspections();foreach (var inspection in inspections)            {                Console.WriteLine($"  - {inspection}");            }            Console.WriteLine();// 生成各种报告            Console.WriteLine("5. 生成管理报告...");            service.GenerateMaintenanceReport(equipments);            service.GenerateProgressReport(plans);            service.GenerateQualityReport(inspections);            Console.WriteLine();            Console.WriteLine("\n=== 系统演示完成 ===");            Console.WriteLine("请检查 Data 文件夹中生成的报告文件!");            Console.ReadLine();        }      }}

性能优化

异常处理

总结

ExcelMapper 三大核心优势

1、零配置启动 —— 约定优于配置,自动映射同名属性

2、灵活可扩展 —— 支持特性、代码、索引等多种映射方式

3、性能卓越 —— 基于 NPOI 纯托管库,无需 Office 环境

最佳实践建议

  • 优先使用约定映射,减少配置代码

  • 大文件处理时设定行范围限制

  • 生产环境务必加上异常处理

无论是快速原型开发,还是构建企业级工业管理系统,ExcelMapper 都能显著提升开发效率,让你专注于业务逻辑,而非 Excel 读写细节。

关键词

#ExcelMapper、C#、#Excel#NPOI#数据导入#数据导出#对象映射#工业自动化、.NET、#模板填充

最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

作者:技术老小子

出处:mp.weixin.qq.com/s/XfauCWqFQl9HOooxJw6htA
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!
END
方便大家交流、资源共享和共同成长
纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读
WPF + OpenCvSharp 搭个 OpenCV 脚手架,所见即所得玩转图像处理
WinForm + AntdUI 实现物料编码自动填充,彻底告别手工 BOM
无需联网!基于 .NET + YOLO 的桌面端图像与视频目标检测实战
WPF 打造工业级图像控件:支持海康相机与 ROI 框选
.NET 9 智能门锁管理系统:远程开锁与临时密码(酒店/民宿)
WPF 工业界面怎么做?这个生产监控项目值得参考

Avalonia 工业级实战:从 PLC 通信到 Web HMI 的完整方案

一个值得收藏的 WinForms 界面框架:流式菜单 + 分割容器 + 多标签页

C# 做动态数据看板?这个 WinForms 多图表方案值得参考

C# 面向自动化产线上位机开源项目(支持报警、日志与多语言)

真正能落地的 .NET 8/9/10 企业平台:集成权限、流程引擎与实时通信

WPF 工业组态界面既专业又现代?HandyControl + ElementUI 风格

.NET 8.0 开发的工业控制领域气密性检测系统

不玩虚的,这款开源 .NET 低代码平台,开箱即用流程引擎、BI 报表、权限控制

WPF 双模式工业温湿度监控上位机,支持独立运行与 MES 对接

WinForm 过时了?3月技术盘点:类IDE上位机、3D仿真与 Modbus调试工具

不靠框架,一套能用的 WinForm 企业人事管理系统(附源码)

C# 工业级温度监控软件:支持多PLC通信与实时曲线绘制

基于 WinForms 实现多设备、多语言的 HMI 上位机框架

WPF 桌面也能做工业级看板?LiveCharts 让数据可视化更出彩

C# 统一工业 CAN 设备通信:跨平台、多厂商、高性能的通信库

一文看懂 CAN 通信:C# 实现上位机通信方法

从零搭建视觉系统?这个 .NET 工业视觉平台值得参考

WinForm + PLC + SQLite 的上位机项目,真的值得你收藏!

.NET 8 + WPF 做工业机器人3D仿真?HelixToolkit 真香

.NET 8 打造工业级运动控制系统

C# 实现工控机硬件监控与看门狗系统,别再让工控机死机

AI 辅助开发如何重塑 .NET 9 + WPF 企业级应用架构?

C# 开发 Modbus 通信?这两大开源库你必须了解

WinForm 自适应布局神器:告别手动计算,轻松实现专业界面

用 C# + WinForms 手撸一个轻量级矢量图绘制系统

WPF + MVVM 工业生产监控平台,用户控件动态加载与流畅动画实现

VisionMaster 通讯太麻烦?.NET 8 + TCP 为工业视觉定制的轻量通信方案

WinForm 打造类 IDE 的运动控制上位机

谁说 .NET 桌面过时了?AI 协作开发 WPF + SQLite 监控工具

WinForm 实现的工业视觉流程编排系统,告别硬编码
基于 .NET 的 YOLO 多模型推理平台开源了
C# 工业开发必备:20+ 开源组件大合集(S7 模拟/流程图引擎/YOLO 视觉)
C# + Halcon 打造 VisionPro 风格的拖拽式视觉工具
WinForms 工业 HMI 上位机框架,Modbus TCP + MQTT 都搞定了
C# 打造工业级 SCADA 系统,从零搭建智慧加压站监控平台
WPF + Modbus 打造轻量级工业数据采集与监控系统
.NET 8 + WPF 打造多协议 PLC 通讯平台,工业数据采集从未如此简单
从零实现 WinForm 运动控制上位机:点动、急停、自动运行全搞定
.NET 好用的 PLC 通信网关,支持多品牌工业设备
不用真实 PLC?这个 C# 模拟器让上位机开发随时联调 S7
.NET 8 + WPF 做工业软件?这个 MES 项目值得参考
C# 零依赖 YOLO 图像标注器 OpenCvSharp 与 GDI+ 双实现
C# 轻量级工业温湿度监控系统(含数据库与源码)
C# 工业级流程图控件:轻量、高效、可交互
C# 工控精选 20+开源项目(含PLC模拟、状态机、高颜值HMI)
C# + Halcon 打造你的可视化机器视觉流程编辑器
C# 工厂自动化实战:用软PLC + HMI 一体化开发控制系统
别再说 C# 做不了工业视觉!多相机 + 插件架构 + 全流程管控全落地
C# 打造自己的 PLC 模拟器:无需硬件也能开发上位机
.NET 9 + Avalonia 实现跨平台 AI 标注工具,一键自动标注 YOLO 目标
C# 实现 Visual Studio 风格的 WinForms 可视化设计器

觉得有收获?不妨分享让更多人受益

关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-25 00:10:06 HTTP/2.0 GET : https://h.sjds.net/a/502758.html
  2. 运行时间 : 0.259780s [ 吞吐率:3.85req/s ] 内存消耗:4,342.55kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=dd886f7d5d665277d009520f98078791
  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.001111s ] mysql:host=127.0.0.1;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001464s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000962s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000800s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001350s ]
  6. SELECT * FROM `set` [ RunTime:0.000625s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001449s ]
  8. SELECT * FROM `article` WHERE `id` = 502758 LIMIT 1 [ RunTime:0.015289s ]
  9. UPDATE `article` SET `lasttime` = 1779639007 WHERE `id` = 502758 [ RunTime:0.035859s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000761s ]
  11. SELECT * FROM `article` WHERE `id` < 502758 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001296s ]
  12. SELECT * FROM `article` WHERE `id` > 502758 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014163s ]
  13. SELECT * FROM `article` WHERE `id` < 502758 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.009426s ]
  14. SELECT * FROM `article` WHERE `id` < 502758 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001193s ]
  15. SELECT * FROM `article` WHERE `id` < 502758 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013269s ]
0.261535s