L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Documents · SKILL.md

xlsx-analyzer

xlsx-analyzer

Excel 数据分析工具 - 创建、编辑和分析电子表格,支持公式、格式化、数据分析和可视化。 当用户需要:创建 Excel 文件、分析数据、修改现有表格、使用公式、生成图表时触发此技能。

Independent GitHub snapshot · Automated classification · Original documentation governs

Hhhhh124hhhh / skillmateApache-2.0

Documentation de la Skill

GitHub

name: xlsx-analyzer description: | Excel 数据分析工具 - 创建、编辑和分析电子表格,支持公式、格式化、数据分析和可视化。 当用户需要:创建 Excel 文件、分析数据、修改现有表格、使用公式、生成图表时触发此技能。

Excel 创建、编辑和分析

概述

用户可能要求你创建、编辑或分析 .xlsx 文件的内容。不同的任务可以使用不同的工具和工作流程。

重要要求

LibreOffice 用于公式重新计算:可以假设 LibreOffice 已安装,用于使用 recalc.py 脚本重新计算公式值。该脚本在首次运行时自动配置 LibreOffice。

读取和分析数据

使用 pandas 进行数据分析

对于数据分析、可视化和基本操作,使用 pandas,它提供强大的数据处理功能:

import pandas as pd

# 读取 Excel
df = pd.read_excel('file.xlsx')  # 默认:第一个工作表
all_sheets = pd.read_excel('file.xlsx', sheet_name=None)  # 所有工作表作为字典

# 分析
df.head()      # 预览数据
df.info()      # 列信息
df.describe()  # 统计信息

# 写入 Excel
df.to_excel('output.xlsx', index=False)

Excel 文件工作流程

关键:使用公式,而非硬编码值

始终使用 Excel 公式,而不是在 Python 中计算值并硬编码。 这确保电子表格保持动态和可更新。

❌ 错误 - 硬编码计算值

# 错误:在 Python 中计算并硬编码结果
total = df['Sales'].sum()
sheet['B10'] = total  # 硬编码 5000

# 错误:在 Python 中计算增长率
growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']
sheet['C5'] = growth  # 硬编码 0.15

# 错误:Python 计算平均值
avg = sum(values) / len(values)
sheet['D20'] = avg  # 硬编码 42.5

✅ 正确 - 使用 Excel 公式

# 正确:让 Excel 计算总和
sheet['B10'] = '=SUM(B2:B9)'

# 正确:增长率作为 Excel 公式
sheet['C5'] = '=(C4-C2)/C2'

# 正确:使用 Excel 函数计算平均值
sheet['D20'] = '=AVERAGE(D2:D19)'

这适用于所有计算 - 总和、百分比、比率、差异等。电子表格应该在源数据更改时能够重新计算。

常见工作流程

  1. 选择工具:pandas 用于数据,openpyxl 用于公式/格式化
  2. 创建/加载:创建新工作簿或加载现有文件
  3. 修改:添加/编辑数据、公式和格式
  4. 保存:写入文件
  5. 重新计算公式(如果使用公式则必须):使用 recalc.py 脚本

创建新的 Excel 文件

# 使用 openpyxl 进行公式和格式化
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment

wb = Workbook()
sheet = wb.active

# 添加数据
sheet['A1'] = '你好'
sheet['B1'] = '世界'
sheet.append(['行', '数据', '列'])

# 添加公式
sheet['B2'] = '=SUM(A1:A10)'

# 格式化
sheet['A1'].font = Font(bold=True, color='FF0000')
sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')
sheet['A1'].alignment = Alignment(horizontal='center')

# 列宽
sheet.column_dimensions['A'].width = 20

wb.save('output.xlsx')

编辑现有 Excel 文件

# 使用 openpyxl 保留公式和格式化
from openpyxl import load_workbook

# 加载现有文件
wb = load_workbook('existing.xlsx')
sheet = wb.active  # 或 wb['SheetName'] 指定工作表

# 处理多个工作表
for sheet_name in wb.sheetnames:
    sheet = wb[sheet_name]
    print(f"工作表: {sheet_name}")

# 修改单元格
sheet['A1'] = '新值'
sheet.insert_rows(2)  # 在位置 2 插入行
sheet.delete_cols(3)  # 删除第 3 列

# 添加新工作表
new_sheet = wb.create_sheet('NewSheet')
new_sheet['A1'] = '数据'

wb.save('modified.xlsx')

重新计算公式

由 openpyxl 创建或修改的 Excel 文件包含公式字符串,但没有计算值。使用提供的 recalc.py 脚本重新计算公式:

python recalc.py <excel_file> [timeout_seconds]

示例:

python recalc.py output.xlsx 30

该脚本:

  • 首次运行时自动设置 LibreOffice 宏
  • 重新计算所有工作表中的所有公式
  • 扫描所有单元格的 Excel 错误(#REF!、#DIV/0! 等)
  • 返回包含详细错误位置和计数的 JSON
  • 适用于 Linux 和 macOS

最佳实践

库选择

  • pandas:最适合数据分析、批量操作和简单数据导出
  • openpyxl:最适合复杂格式化、公式和 Excel 特定功能

使用 openpyxl

  • 单元格索引从 1 开始(row=1, column=1 指的是单元格 A1)
  • 使用 data_only=True 读取计算值:load_workbook('file.xlsx', data_only=True)
  • 警告:如果使用 data_only=True 打开并保存,公式将被值替换并永久丢失
  • 对于大文件:使用 read_only=True 读取或 write_only=True 写入
  • 公式被保留但不评估 - 使用 recalc.py 更新值

使用 pandas

  • 指定数据类型以避免推断问题:pd.read_excel('file.xlsx', dtype={'id': str})
  • 对于大文件,读取特定列:pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])
  • 正确处理日期:pd.read_excel('file.xlsx', parse_dates=['date_column'])

依赖要求

  • openpyxl: pip install openpyxl
  • pandas: pip install pandas
  • LibreOffice: 系统包管理器安装

代码风格指南

重要:为 Excel 操作生成 Python 代码时:

  • 编写简洁的代码
  • 避免冗余的操作和打印语句
  • 使用有意义的变量名但不过分冗长
Skills enregistrées