Python 与 Excel 的整合非常强大,尤其适合处理大数据、自动化表格操作以及进行高级数据分析。以下是一个全教程,涵盖常用的 Python 库及其应用:
pip install openpyxl pandas xlrd xlsxwriter pywin32
openpyxl
: 用于操作 Excel 的 .xlsx
文件(推荐)。pandas
: 强大的数据分析工具,支持读取和写入 Excel。xlrd
和 xlsxwriter
: 分别用于读取 .xls
文件和写入 .xlsx
文件。pywin32
: 操作 Windows 的 Excel 应用程序(需本地安装 Microsoft Excel)。openpyxl
操作 Excelfrom openpyxl import load_workbook
# 打开工作簿
wb = load_workbook('example.xlsx')
sheet = wb.active
# 获取单元格值
print(sheet['A1'].value)
# 遍历行或列
for row in sheet.iter_rows(min_row=1, max_row=5, values_only=True):
print(row)
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
# 写入数据
sheet['A1'] = 'Hello'
sheet['B1'] = 'World'
# 保存文件
wb.save('example.xlsx')
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('example.xlsx')
# 显示数据
print(df.head())
# 写入到 Excel 文件
df.to_excel('output.xlsx', index=False)
# 筛选数据
filtered = df[df['Sales'] > 500] print(filtered)
pywin32
操作 Excel 应用程序import win32com.client
# 启动 Excel 应用程序
excel = win32com.client.Dispatch('Excel.Application')
# 打开一个工作簿
wb = excel.Workbooks.Open('C:\\path\\to\\your\\file.xlsx')
sheet = wb.Sheets(1)
# 获取单元格值
print(sheet.Cells(1, 1).Value)
# 保存并关闭
wb.Save()
wb.Close()
excel.Quit()
openpyxl
添加图表from openpyxl.chart import BarChart, Reference
from openpyxl import Workbook
# 创建工作簿和数据
wb = Workbook()
sheet = wb.active
data = [
['Month', 'Sales'],
['Jan', 100],
['Feb', 200],
['Mar', 300],
]
for row in data:
sheet.append(row)
# 创建图表
chart = BarChart()
values = Reference(sheet, min_col=2, min_row=2, max_row=4)
chart.add_data(values, titles_from_data=True)
sheet.add_chart(chart, 'E5')
wb.save('chart.xlsx')
# 按月份汇总销售额
summary = df.groupby('Month')['Sales'].sum()
print(summary)
# 将汇总结果保存到新表
summary.to_excel('summary.xlsx')
excel_file = pd.ExcelFile('example.xlsx')
for sheet_name in excel_file.sheet_names:
print(sheet_name)
sheet_data = excel_file.parse(sheet_name)
print(sheet_data.head())
with pd.ExcelWriter('multi_sheets.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
利用 Python 脚本定时操作:
import schedule
import time
def job():
print("运行 Excel 操作任务")
# 调用操作代码
pass
# 每天运行
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
openpyxl
文档: https://openpyxl.readthedocs.iopandas
文档: https://pandas.pydata.orgpywin32
项目主页: https://github.com/mhammond/pywin32