当前位置:首页>Excel>【小沐学Python】别再加班处理Excel了!Python自动化让你准时下班!(12)

【小沐学Python】别再加班处理Excel了!Python自动化让你准时下班!(12)

  • 2026-04-01 21:57:10
【小沐学Python】别再加班处理Excel了!Python自动化让你准时下班!(12)
小沐:"戈戈,老板让我整理这周的销售数据,Excel 文件太多了,看得我头都大了!"
小沐揉着太阳穴抱怨道。 
戈戈:"别急,Python 处理 Excel 可是强项,各种库任你选择。"
戈戈一边敲着代码一边说。 
小沐:"真的吗?有哪些库可以用呢?" 
戈戈:"openpyxl、pandas、xlsxwriter……每个都有自己的特点,我这就给你详细介绍一下!"
pip install openpyxl pandas xlsxwriter xlrd xlwt pyxlsb

1. openpyxl:现代化的 Excel 操作利器

openpyxl 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库,它提供了丰富的 API,可以处理 Excel 文件的各个方面,包括单元格、行、列、工作表、样式、公式等。openpyxl 完全用 Python 编写,不需要安装 Excel 或其他依赖,支持最新的 Excel 格式,是目前 Python 处理 Excel 文件的首选库之一。

openpyxl 的优势包括:支持读写 .xlsx 格式文件;可以创建新文件或修改现有文件;支持丰富的格式设置,如字体、颜色、边框等;支持图表和图片的插入;支持公式的读取和写入。不过需要注意的是,openpyxl 不支持 .xls 格式的老版本 Excel 文件,如果需要处理 .xls 文件,应该使用 xlrd 库。

1.1 openpyxl 的基本操作

使用 openpyxl 进行基本的 Excel 操作非常直观。我们可以创建工作簿、添加工作表、写入数据、读取数据,最后保存文件。openpyxl 的设计理念是让 Excel 操作尽可能简单,同时保持灵活性。在开始操作之前,需要先创建或打开一个工作簿对象,然后通过工作簿访问其中的工作表,最后通过工作表访问单元格。

下面的示例展示了如何使用 openpyxl 创建一个新的 Excel 文件,并写入一些基本数据:

from openpyxl import Workbookfrom openpyxl.styles import Font, PatternFill, Alignment# 创建一个新的工作簿wb = Workbook()ws = wb.activews.title = "员工信息表"# 设置标题行headers = ["工号", "姓名", "部门", "职位", "入职日期", "月薪"]ws.append(headers)# 添加一些示例数据employees = [    ["E001", "张三", "技术部", "软件工程师", "2022-03-15", 5000],    ["E002", "李四", "市场部", "市场专员", "2021-07-01", 9000],    ["E003", "王五", "财务部", "会计", "2020-11-20", 6000],    ["E004", "赵六", "技术部", "产品经理", "2021-05-10", 6600],    ["E005", "钱七", "人力资源", "HR专员", "2022-01-08", 8500]]# 写入员工数据for emp in employees:    ws.append(emp)# 设置标题样式header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")header_font = Font(bold=True, color="FFFFFF", size=12)header_alignment = Alignment(horizontal="center", vertical="center")for col in range(1, len(headers) + 1):    cell = ws.cell(row=1, column=col)    cell.fill = header_fill    cell.font = header_font    cell.alignment = header_alignment# 设置列宽column_widths = [10, 10, 10, 12, 15, 10]for col, width in enumerate(column_widths, 1):    ws.column_dimensions[chr(64 + col)].width = width# 保存文件wb.save("employees.xlsx")print("✓ 员工信息表已成功创建:employees.xlsx")

代码运行结果如下:

image

1.2 读取和修改现有 Excel 文件

openpyxl 不仅可以创建新的 Excel 文件,还可以读取和修改现有的文件。这在实际工作中非常有用,比如更新报表数据、修改配置信息等。读取 Excel 文件时,可以按照工作表、行、列、单元格的方式访问数据,非常灵活。修改数据后,只需要保存文件即可更新原文件。

下面的示例展示了如何读取 Excel 文件中的数据,并进行一些统计和分析:

from openpyxl import load_workbookfrom datetime import datetime# 打开现有的 Excel 文件wb = load_workbook("employees.xlsx")ws = wb["员工信息表"]print("员工信息统计:")print("=" * 50)# 读取并显示所有员工信息print("\n所有员工列表:")for row in range(2, ws.max_row + 1):    emp_id = ws.cell(row, 1).value    name = ws.cell(row, 2).value    department = ws.cell(row, 3).value    position = ws.cell(row, 4).value    salary = ws.cell(row, 6).value    print(f"{emp_id} | {name} | {department} | {position} | ¥{salary}")# 统计各部门人数和平均薪资department_stats = {}total_salary = 0for row in range(2, ws.max_row + 1):    department = ws.cell(row, 3).value    salary = ws.cell(row, 6).value    if department not in department_stats:        department_stats[department] = {"count": 0, "total_salary": 0}    department_stats[department]["count"] += 1    department_stats[department]["total_salary"] += salary    total_salary += salaryprint("\n" + "=" * 50)print("部门统计:")for dept, stats in department_stats.items():    avg_salary = stats["total_salary"] / stats["count"]    print(f"{dept}: {stats['count']} 人, 平均薪资 ¥{avg_salary:.2f}")print(f"\n公司总人数: {ws.max_row - 1} 人")print(f"公司平均薪资: ¥{total_salary / (ws.max_row - 1):.2f}")

代码运行结果如下:

2. pandas:数据分析的神器

pandas 是 Python 中最流行的数据分析库之一,它提供了强大的数据结构和数据分析工具。pandas 的 read_excel() 和 to_excel() 函数让 Excel 文件的读取和写入变得异常简单,更重要的是,pandas 可以直接将 Excel 数据读取为 DataFrame,然后利用 pandas 强大的数据处理能力进行各种分析操作。

pandas 处理 Excel 的优势在于:可以快速读取大量数据;支持多种数据格式转换;内置丰富的数据分析功能;支持数据过滤、分组、聚合等操作;可以轻松处理缺失数据;支持多工作表读取。pandas 底层使用了 openpyxl 或 xlrd 作为引擎,因此具有很好的兼容性。

2.1 使用 pandas 读取 Excel 文件

pandas 的 read_excel() 函数可以轻松地将 Excel 文件读取为 DataFrame,支持多种参数配置,比如指定工作表、选择特定列、设置索引列、处理缺失值等。读取后的 DataFrame 可以像表格一样进行各种操作,非常适合数据分析场景。

下面的示例展示了如何使用 pandas 读取 Excel 文件,并进行数据分析和可视化:

import pandas as pdimport matplotlib.pyplot as plt# 设置中文字体plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号# 读取 Excel 文件df = pd.read_excel("employees.xlsx", sheet_name="员工信息表")print("数据预览:")print(df.head())print("\n数据统计信息:")print(df.describe())# 按部门统计人数dept_count = df['部门'].value_counts()print("\n各部门人数:")print(dept_count)# 按部门统计平均薪资dept_salary = df.groupby('部门')['月薪'].mean().sort_values(ascending=False)print("\n各部门平均薪资:")print(dept_salary)# 创建可视化图表fig, axes = plt.subplots(1, 2, figsize=(14, 5))# 部门人数柱状图dept_count.plot(kind='bar', ax=axes[0], color='skyblue')axes[0].set_title('各部门人数统计')axes[0].set_xlabel('部门')axes[0].set_ylabel('人数')# 部门平均薪资柱状图dept_salary.plot(kind='bar', ax=axes[1], color='lightgreen')axes[1].set_title('各部门平均薪资')axes[1].set_xlabel('部门')axes[1].set_ylabel('平均薪资')plt.tight_layout()plt.savefig('employee_stats.png', dpi=300, bbox_inches='tight')print("\n✓ 统计图表已保存:employee_stats.png")

代码运行结果如下:

image
image

2.2 使用 pandas 写入 Excel 文件

pandas 的 to_excel() 函数可以将 DataFrame 写入 Excel 文件,支持多种输出选项,比如指定工作表名称、设置索引、控制格式等。pandas 还支持将多个 DataFrame 写入同一个 Excel 文件的不同工作表中,非常适合生成多页报表。

下面的示例展示了如何使用 pandas 将分析结果写入 Excel 文件:

import pandas as pd# 读取原始数据df = pd.read_excel("employees.xlsx", sheet_name="员工信息表")# 数据分析:计算各部门统计信息dept_stats = df.groupby('部门').agg({    '工号': 'count',    '月薪': ['mean', 'min', 'max', 'sum']}).round(2)dept_stats.columns = ['人数', '平均薪资', '最低薪资', '最高薪资', '总薪资']# 数据分析:计算职级分布position_stats = df['职位'].value_counts().reset_index()position_stats.columns = ['职位', '人数']# 创建 Excel Writer 对象with pd.ExcelWriter('employee_report.xlsx', engine='openpyxl') as writer:    # 写入原始数据    df.to_excel(writer, sheet_name='原始数据', index=False)    # 写入部门统计    dept_stats.to_excel(writer, sheet_name='部门统计')    # 写入职位分布    position_stats.to_excel(writer, sheet_name='职位分布', index=False)    # 写入薪资分析    salary_analysis = pd.DataFrame({        '指标': ['总薪资', '平均薪资', '最高薪资', '最低薪资', '薪资中位数'],        '数值': [            df['月薪'].sum(),            df['月薪'].mean(),            df['月薪'].max(),            df['月薪'].min(),            df['月薪'].median()        ]    })    salary_analysis.to_excel(writer, sheet_name='薪资分析', index=False)print("✓ 员工报表已生成:employee_report.xlsx")print("  - 工作表:原始数据、部门统计、职位分布、薪资分析")

代码运行结果如下:

3. xlsxwriter:专业的 Excel 写入工具

xlsxwriter 是一个专门用于写入 Excel 文件的 Python 库,它专注于创建高质量的 Excel 文件,支持丰富的格式设置、图表、条件格式、数据验证等功能。xlsxwriter 的特点是写入速度快、功能强大、生成的文件质量高,特别适合生成报表、导出数据等场景。

xlsxwriter 的优势包括:纯 Python 实现,无需安装 Excel;支持大量的 Excel 功能,如图表、图片、公式、条件格式等;写入性能优秀;生成的文件兼容性好;支持大数据量的写入。不过需要注意的是,xlsxwriter 只能创建新文件,不能修改已有的 Excel 文件。

3.1 创建带有图表的 Excel 报表

xlsxwriter 提供了强大的图表功能,可以轻松创建各种类型的图表,包括柱状图、折线图、饼图、散点图等。图表可以自定义样式、标题、轴标签、图例等属性,让数据可视化更加专业。在生成报表时,图表可以帮助读者更直观地理解数据。

下面的示例展示了如何使用 xlsxwriter 创建一个包含图表的销售报表:

import xlsxwriter# 创建一个新的 Excel 文件workbook = xlsxwriter.Workbook('sales_report.xlsx')worksheet = workbook.add_worksheet('销售数据')# 定义格式header_format = workbook.add_format({    'bold': True,    'font_size': 12,    'bg_color': '#4472C4',    'font_color': 'white',    'align': 'center',    'valign': 'vcenter',    'border': 1})number_format = workbook.add_format({    'num_format': '¥#,##0.00',    'align': 'center'})# 准备数据headers = ['月份', '销售额', '成本', '利润', '利润率']data = [    ['1月', 50000, 30000, 20000, '40%'],    ['2月', 65000, 38000, 27000, '41.5%'],    ['3月', 58000, 35000, 23000, '39.7%'],    ['4月', 72000, 42000, 30000, '41.7%'],    ['5月', 80000, 45000, 35000, '43.8%'],    ['6月', 75000, 43000, 32000, '42.7%']]# 写入标题worksheet.set_column('A:A', 10)worksheet.set_column('B:E', 15)for col, header in enumerate(headers):    worksheet.write(0, col, header, header_format)# 写入数据for row, row_data in enumerate(data, 1):    for col, cell_data in enumerate(row_data):        if col in [1, 2, 3]:  # 数值列应用格式            worksheet.write(row, col, cell_data, number_format)        else:            worksheet.write(row, col, cell_data)# 创建柱状图chart = workbook.add_chart({'type': 'column'})# 添加数据系列chart.add_series({    'name': '销售额',    'categories': ['销售数据', 1, 0, 6, 0],    'values': ['销售数据', 1, 1, 6, 1],    'fill': {'color': '#4472C4'}})chart.add_series({    'name': '成本',    'categories': ['销售数据', 1, 0, 6, 0],    'values': ['销售数据', 1, 2, 6, 2],    'fill': {'color': '#ED7D31'}})chart.add_series({    'name': '利润',    'categories': ['销售数据', 1, 0, 6, 0],    'values': ['销售数据', 1, 3, 6, 3],    'fill': {'color': '#70AD47'}})# 设置图表属性chart.set_title({'name': '2024年上半年销售业绩'})chart.set_x_axis({'name': '月份'})chart.set_y_axis({'name': '金额(元)'})chart.set_legend({'position': 'bottom'})# 插入图表worksheet.insert_chart('G2', chart, {'x_offset': 25, 'y_offset': 10})# 关闭工作簿workbook.close()print("✓ 销售报表已成功创建:sales_report.xlsx")

代码运行结果如下:

3.2 使用条件格式和数据验证

xlsxwriter 支持条件格式,可以根据单元格的值自动应用不同的格式,这对于数据可视化非常有帮助。同时,xlsxwriter 还支持数据验证功能,可以限制用户输入的数据类型或范围,提高数据质量。

下面的示例展示了如何使用条件格式和数据验证:

import xlsxwriter# 创建工作簿workbook = xlsxwriter.Workbook('student_scores.xlsx')worksheet = workbook.add_worksheet('学生成绩')# 定义格式header_format = workbook.add_format({    'bold': True,    'bg_color': '#4472C4',    'font_color': 'white',    'align': 'center'})pass_format = workbook.add_format({    'bg_color': '#70AD47',    'font_color': 'white',    'align': 'center'})fail_format = workbook.add_format({    'bg_color': '#FF0000',    'font_color': 'white',    'align': 'center'})excellent_format = workbook.add_format({    'bg_color': '#FFD700',    'font_color': 'black',    'bold': True,    'align': 'center'})# 写入标题headers = ['学号', '姓名', '语文', '数学', '英语', '总分', '平均分']for col, header in enumerate(headers):    worksheet.write(0, col, header, header_format)# 准备数据students = [    ['S001', '张三', 85, 90, 88],    ['S002', '李四', 65, 70, 68],    ['S003', '王五', 95, 98, 96],    ['S004', '赵六', 45, 55, 50],    ['S005', '钱七', 75, 80, 78]]# 写入数据并计算总分和平均分for row, student in enumerate(students, 1):    for col, data in enumerate(student):        worksheet.write(row, col, data)    # 计算总分    total = sum(student[2:])    worksheet.write(row, 5, total)    # 计算平均分    average = total / 3    worksheet.write(row, 6, round(average, 2))# 应用条件格式# 及格条件(>=60)worksheet.conditional_format('C2:E6', {    'type': 'cell',    'criteria': '>=',    'value': 60,    'format': pass_format})# 不及格条件(<60)worksheet.conditional_format('C2:E6', {    'type': 'cell',    'criteria': '<',    'value': 60,    'format': fail_format})# 优秀条件(>=90)worksheet.conditional_format('C2:E6', {    'type': 'cell',    'criteria': '>=',    'value': 90,    'format': excellent_format})# 添加数据验证(分数必须在0-100之间)worksheet.data_validation('C2:E6', {    'validate': 'integer',    'criteria': 'between',    'minimum': 0,    'maximum': 100,    'input_title': '请输入分数',    'input_message': '分数必须在 0 到 100 之间',    'error_title': '输入错误',    'error_message': '分数超出范围!'})# 设置列宽worksheet.set_column('A:B', 10)worksheet.set_column('C:F', 10)worksheet.set_column('G:G', 12)workbook.close()print("✓ 学生成绩表已创建:student_scores.xlsx")print("  - 包含条件格式(及格/不及格/优秀)")print("  - 包含数据验证(分数范围 0-100)")

代码运行结果如下:

4. xlrd 和 xlwt:处理老版本 Excel 文件

xlrd 和 xlwt 是专门用于处理 .xls 格式(Excel 97-2003)的老版本 Excel 文件的库。虽然现在的 Excel 主要使用 .xlsx 格式,但在一些旧系统或遗留项目中,仍然会遇到 .xls 文件。xlrd 用于读取 .xls 文件,xlwt 用于写入 .xls 文件。

需要注意的是,xlrd 和 xlwt 有一些限制:xlrd 只支持读取,不支持写入;xlwt 只支持写入,不支持读取;xlrd 从 2.0 版本开始不再支持 .xlsx 文件;xlwt 不支持新版本的 Excel 功能,如条件格式、图表等。对于新项目,建议使用 openpyxl 或 pandas。

4.1 使用 xlrd 读取 .xls 文件

xlrd 提供了简单的 API 来读取 .xls 文件中的数据。我们可以打开工作簿、选择工作表、读取单元格数据、遍历行和列等。xlrd 会自动处理 .xls 文件的编码问题,支持中文内容的读取。

下面的示例展示了如何使用 xlrd 读取 .xls 文件:

import xlrd# 注意:xlrd 2.0+ 不再支持 .xlsx 文件# 如果需要读取 .xlsx 文件,请使用 openpyxl 或 pandas# 创建一个 .xls 文件用于测试(使用 xlwt)import xlwtwb = xlwt.Workbook()ws = wb.add_sheet('产品信息')products = [    ['产品编号', '产品名称', '价格', '库存'],    ['P001', '笔记本电脑', 4999, 50],    ['P002', '无线鼠标', 99, 200],    ['P003', '机械键盘', 299, 80],    ['P004', '显示器', 1599, 30]]for row, product in enumerate(products):    for col, value in enumerate(product):        ws.write(row, col, value)wb.save('products.xls')# 使用 xlrd 读取 .xls 文件workbook = xlrd.open_workbook('products.xls')worksheet = workbook.sheet_by_name('产品信息')print("产品信息表:")print("=" * 60)# 获取工作表信息print(f"工作表名称: {worksheet.name}")print(f"行数: {worksheet.nrows}")print(f"列数: {worksheet.ncols}")print()# 读取所有数据print("所有产品信息:")for row in range(worksheet.nrows):    row_data = []    for col in range(worksheet.ncols):        cell_value = worksheet.cell_value(row, col)        row_data.append(str(cell_value))    print(" | ".join(row_data))# 按列读取数据print("\n按列读取产品名称:")product_names = worksheet.col_values(1, start_rowx=1)for i, name in enumerate(product_names, 1):    print(f"{i}. {name}")# 计算库存总量print("\n库存统计:")prices = worksheet.col_values(2, start_rowx=1)stocks = worksheet.col_values(3, start_rowx=1)total_stock = sum(stocks)total_value = sum(p * s for p, s in zip(prices, stocks))print(f"总库存数量: {total_stock}")print(f"总库存价值: ¥{total_value:,.2f}")

代码运行结果如下:

"原来处理 Excel 有这么多库可以选择啊!"小沐兴奋地说。 "是啊,根据不同的需求选择合适的库,能让工作效率大大提升。"戈戈笑着说。 "那我赶紧回去试试,把那些销售数据都处理掉!"

结语

如果您觉得这些文字有一点点用处,请给作者点个赞或关个注;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见:
CSDN博客:爱看书的小沐

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-07 11:39:39 HTTP/2.0 GET : https://h.sjds.net/a/484012.html
  2. 运行时间 : 0.105538s [ 吞吐率:9.48req/s ] 内存消耗:4,407.56kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=252210bfaa35380bfc41d56c25c0f89c
  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.000620s ] mysql:host=127.0.0.1;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001030s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000261s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001531s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000765s ]
  6. SELECT * FROM `set` [ RunTime:0.000202s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000770s ]
  8. SELECT * FROM `article` WHERE `id` = 484012 LIMIT 1 [ RunTime:0.000563s ]
  9. UPDATE `article` SET `lasttime` = 1775533180 WHERE `id` = 484012 [ RunTime:0.004274s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000256s ]
  11. SELECT * FROM `article` WHERE `id` < 484012 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000540s ]
  12. SELECT * FROM `article` WHERE `id` > 484012 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000475s ]
  13. SELECT * FROM `article` WHERE `id` < 484012 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002752s ]
  14. SELECT * FROM `article` WHERE `id` < 484012 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004935s ]
  15. SELECT * FROM `article` WHERE `id` < 484012 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013060s ]
0.107148s