跳到内容
当前位置:首页>Excel>python-使用pandas导出的excel自带趋势图

python-使用pandas导出的excel自带趋势图

  • 2026-11-08 15:43:13
python-使用pandas导出的excel自带趋势图

r日常工具中,辛辛苦苦从数据库拉数据、清洗、透视,用 df.to_excel() 导出了一张工整的报表。全是密密麻麻的数据,是否感觉少了点什么?是否感觉数据不够直观?

今天我们就来学习和探讨这输出的报表中增加图表,使报表在数据丰富的同时,提供直观的迷你图!

如果光从数据中去感受,十二列月度数字,需要从左到右逐个比对、心算、在脑子里画折线。此时,简单的做法是,可以在旁边画一张大图,但多行数据时,一张静态折线图根本承载不了“每一行自己的形状”。

迷你图(Sparkline)解决的正是这个问题:

塞进单元格里的小图表,不占图表对象、不产生图片、文件体积几乎不增加,一列“趋势”就能让整张表从“数据仓库”变成“可读报告”。而 XlsxWriter 是 Python 生态里对迷你图支持最成熟的引擎——openpyxl 至今不支持原生写入 sparkline,甚至重新保存带迷你图的文件时会将其丢弃。

今天我们来聊聊“为什么是 XlsxWriter”,“怎么和 Pandas 无缝衔接”,提供两段可直接运行的完整代码,覆盖日常最常见的两类场景。

为什么是 XlsxWriter?

Pandas 的 to_excel() 默认使用 openpyxl 引擎,但 openpyxl 在迷你图这件事上有硬伤:它不建模 sparkline 扩展,重新保存已有的 Excel 文件时,Sparkline Group extension is not supported and will be removed 的警告会直接告诉你迷你图被丢掉了。换句话说,如果你走 openpyxl 路线,要么写不进去,要么写了也保不住。

XlsxWriter 则是把迷你图作为 写入时的一等公民 来处理的。核心就是一行:

worksheet.add_sparkline('F1', {'range': 'A1:E1'})

range 是唯一必填参数,指定迷你图要绘制的数据范围;位置可以用 'F1' 这种 A1 记号,也可以用行列坐标 (0, 5)。type 控制图形类型——'line'(默认)、'column'、'win_loss' 三种;再往上还有 markers、high_point、low_point、negative_points、series_color 等大量可调参数。

开始之前,如果还没有安装对应的第三方库 XlsxWriter,则需要安装下:

pip install xlsxwriter

和 Pandas 衔接

衔接方式也比较简单:用 pd.ExcelWriter(..., engine='xlsxwriter') 拿到 writer 之后,writer.book 就是 XlsxWriter 的 Workbook,writer.sheets['Sheet1'] 就是已经写好数据的那张 worksheet,直接在上面调 add_sparkline() 即可。数据写入和可视化增强,各走各的通道。

场景一:销售区域月度趋势(line 迷你图 + 共享刻度)

最常见的需求:一张透视表,每行一个区域,B 到 G 是六个月数值,希望在最后一列放一条折线迷你图,让每个区域的“形状”一眼可见。

关键细节:默认情况下,每行迷你图独立缩放。一个区间在 60–90 的区域,和一个区间在 900–1400 的区域,画出来的线条可能“看起来差不多剧烈”。如果读者要跨行比较趋势幅度,必须把纵轴设为组共享: 'max': 'group', 'min': 'group' 'group' 的含义是:取所有迷你图中的最大值和最小值作为统一坐标轴。

import pandas as pd# 模拟透视后的销售数据:区域 × 6 个月pivot = pd.DataFrame(    {        "Jan": [120, 98, 61, 205],        "Feb": [138, 94, 66, 198],        "Mar": [131, 102, 72, 220],        "Apr": [152, 88, 70, 215],        "May": [149, 91, 79, 240],        "Jun": [168, 84, 88, 232],    },    index=["North", "South", "East", "West"],)pivot.index.name = "Region"with pd.ExcelWriter("sales_trend.xlsx", engine="xlsxwriter") as writer:    pivot.to_excel(writer, sheet_name="Trends")    ws = writer.sheets["Trends"]    n_data_rows = len(pivot)          # 4 行数据    last_data_col = len(pivot.columns)  # 6 个月,数据在 B..G    spark_col = last_data_col + 1     # 迷你图放在 H 列(0-based 第 7 列)    for r in range(1, n_data_rows + 1):        # r 是 DataFrame 的 0-based 行号;        # Excel 中数据从第 2 行开始(第 1 行是表头),所以行号是 r + 1        data_range = f"Trends!B{r + 1}:G{r + 1}"        ws.add_sparkline(r, spark_col, {            "range": data_range,            "type": "line",            "max": "group",            "min": "group",            "markers": True,            "high_point": True,            "low_point": True,        })    ws.set_column(0, 0, 14)            # 区域名列宽一点    ws.set_column(spark_col, spark_col, 18)  # 迷你图列宽print("sales_trend.xlsx 已生成")

这里需要注意行号偏移。pivot.to_excel() 默认会把 index 写进第 1 列,表头占第 1 行,所以第一条数据落在 Excel 的第 2 行。range 里的行号要用 r + 1,而 add_sparkline 的第一个参数 r 是 0-based 的行坐标——两者差 1,写错就会画出“上一行”的形状。

high_point 和 low_point 会把每行的最高、最低点标出来,markers 给折线加节点。这些小标记不增加阅读负担,但让“峰值在哪个月”从“需要猜”变成“一眼看到”。

场景二:财务差异分析(win_loss + negative_points)

第二类高频场景:实际值 vs 预算的差异,逐月排列,要的是“哪些月超了、哪些月欠了”,而不是具体幅度。这时候 column 或 win_loss 比 line 更合适。

win_loss 的语义是:每个数据点只表达正/负方向,丢掉幅度。配合 negative_points=True,负值会被单独高亮,这在差异分析的时候经常使用。

import numpy as npimport pandas as pdnp.random.seed(42)months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]departments = ["Marketing", "R&D", "Sales", "Ops", "HR"]# 实际 - 预算 的月度差异(有正有负)variance = pd.DataFrame(    np.random.randint(-18, 22, size=(len(departments), len(months))),    index=departments,    columns=months,)variance.index.name = "Department"with pd.ExcelWriter("variance_report.xlsx", engine="xlsxwriter") as writer:    variance.to_excel(writer, sheet_name="Variance")    ws = writer.sheets["Variance"]    n_rows = len(variance)    last_col = len(variance.columns)    spark_col = last_col + 1    for r in range(1, n_rows + 1):        data_range = f"Variance!B{r + 1}:G{r + 1}"        ws.add_sparkline(r, spark_col, {            "range": data_range,            "type": "win_loss",            "negative_points": True,        })    ws.set_column(0, 0, 16)    ws.set_column(spark_col, spark_col, 16)print("variance_report.xlsx 已生成")

win_loss 有一个前提:数据本身必须是带符号的。如果直接把“实际收入”塞进去,所有值都是正的,win_loss 会变成一排没有意义的色块。差异列要在 Pandas 里算好:actual - budget 再写入 Excel,迷你图才有东西可展示。

参数速查与几个容易踩的坑

把最常用的参数收在一张“速查表”里,写代码时不用反复翻文档:

  • 必填 range:二维数据范围,跨 sheet 用 'Sheet2!A1:E1',sheet 名带空格要加引号 "'Monthly Data'!A1:E1'"。
  • 类型 type:图形语义,'line'折线(默认),展示连续趋势的形状;'column'微型柱状图,强调单个值;'win_loss'输赢图,每个数只表达正/负方向,丢弃幅度。
  • 刻度 max/min:设为 'group' 让同一批迷你图共享纵轴,跨行可比;固定数字则适用于跨月/跨期报告的一致性。
  • markers:True/False,仅在 line 类型下生效,给折线加上数据节点标记;
  • high_point/low_point/first_point/last_point:接受 True/False, 分别高亮最大值点、最小值点、首点、尾点
  • negative_points:差异分析的关键开关,True/False,将所有负值数据点用醒目颜色标出
  • 几个开关要按需打开,不要全开;标记太多会稀释迷你图“一眼看形状”的优势。
  • series_color:折线/柱子的主体颜色,接受 '#5B5CF0' 这类十六进制值,还有其他的一些颜色设定,这里就不一一列出。

三个实操提醒:

  1. range 的行号是 Excel 行号,add_sparkline 的位置坐标是 0-based,两者相差 1,循环时最容易在这里出错;
  2. 迷你图是 Excel 2010+ 的功能,写入 .xlsx 文件后,用 Excel 2007 打开不会显示,但数据本身不受影响;
  3. 如果后续需要用 Python 重新打开并修改这个文件,不要走 openpyxl 保存,否则迷你图会被清掉;把迷你图生成放在流水线的最后一步 to_excel 之后、writer 关闭之前,一次性完成。

最后总结

  • Pandas 负责把数据整理干净,
  • XlsxWriter 负责把数据“翻译”成读者能直接感知的形状。
  • add_sparkline 只有一行,但它改变的是一整张表的阅读方式:从“十二列数字”变成“十二列数字 + 十二个趋势”,读者不再需要自己在脑子里画图。

下次导出报表时,在 writer.sheets[...] 后面加上那个循环;你的 Excel 会给你提供不一样的感觉。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-11-09 07:44:37 HTTP/1.1 GET : http://h.sjds.net/a/567484.html
  2. 运行时间 : 0.082032s [ 吞吐率:12.19req/s ] 内存消耗:4,205.36kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3ce7e1d60534c86bf2b0a0e589c1f464
  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.000387s ] mysql:host=172.18.0.4;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000760s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000400s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000304s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000684s ]
  6. SELECT * FROM `set` [ RunTime:0.000349s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000791s ]
  8. SELECT * FROM `article` WHERE `id` = 567484 LIMIT 1 [ RunTime:0.000517s ]
  9. UPDATE `article` SET `lasttime` = 1794181477 WHERE `id` = 567484 [ RunTime:0.001871s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000333s ]
  11. SELECT * FROM `article` WHERE `id` < 567484 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000448s ]
  12. SELECT * FROM `article` WHERE `id` > 567484 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000359s ]
  13. SELECT * FROM `article` WHERE `id` < 567484 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000611s ]
  14. SELECT * FROM `article` WHERE `id` < 567484 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000769s ]
  15. SELECT * FROM `article` WHERE `id` < 567484 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000512s ]
0.095766s