自动化办公|xlwings与pandas交互

1. 介绍

在数据分析和 Excel 自动化中,pandas 作为 Python 处理数据的强大库,而 xlwings 则可以高效操作 Excel。将 pandasxlwings 结合使用,可以实现从 Excel 读取数据到 DataFrame、将 DataFrame 写入 Excel 以及 Excel 的自动化处理。


2. 从 Excel 读取数据到 Pandas DataFrame

2.1 读取整个表格

复制代码
import xlwings as xw
import pandas as pd

wb = xw.Book("example.xlsx")  # 打开 Excel 文件
sheet = wb.sheets["Sheet1"]   # 选择工作表

# 读取 Excel 数据到 Pandas DataFrame
data = sheet.range("A1").expand().options(pd.DataFrame, index=False).value
print(data)

2.2 读取指定范围的数据

复制代码
subset = sheet.range("A1:C10").options(pd.DataFrame, index=False).value
print(subset)

3. 将 Pandas DataFrame 写入 Excel

3.1 将 DataFrame 写入 Excel 指定位置

复制代码
data = pd.DataFrame({
    "姓名": ["张三", "李四", "王五"],
    "年龄": [25, 30, 28],
    "城市": ["北京", "上海", "广州"]
})

# 写入 Excel
sheet.range("A1").value = data

3.2 追加数据到 Excel

复制代码
last_row = sheet.range("A" + str(sheet.cells.last_cell.row)).end("up").row
sheet.range(f"A{last_row+1}").value = data

4. 使用 Pandas 与 xlwings 自动化 Excel 处理

4.1 调整列宽

复制代码
sheet.autofit("columns")  # 自动调整列宽

4.2 应用 Excel 公式

复制代码
sheet.range("D2").formula = "=SUM(B2:B10)"  # 在 D2 单元格插入求和公式

4.3 设置 Excel 格式

复制代码
sheet.range("A1:C1").font.bold = True  # 设置标题加粗
sheet.range("B:B").number_format = "0"  # 设置数值格式

5. 读取带有公式的 Excel 数据

5.1 获取公式内容

复制代码
formulas = sheet.range("D2:D10").formula  # 获取公式而不是计算后的值
print(formulas)

5.2 获取公式计算后的值

复制代码
values = sheet.range("D2:D10").value  # 获取计算后的值
print(values)

6. 结合 Pandas 与 xlwings 处理大数据

6.1 读取大数据集并转换

复制代码
data = sheet.range("A1").expand().options(pd.DataFrame, index=False, chunksize=1000).value

6.2 分批写入 Excel

复制代码
for i, chunk in enumerate(data):
    sheet.range(f"A{i*1000+1}").value = chunk

7. 结论

结合 pandasxlwings,我们可以高效地读取、写入和操作 Excel 数据,并利用 Excel 的自动化功能提升生产力。这种方法适用于数据分析、报表生成和企业自动化任务。

相关推荐
疯狂踩坑人14 分钟前
【Python版 2026 从零学Langchain 1.x】(二)结构化输出和工具调用
后端·python·langchain
自可乐20 分钟前
n8n全面学习教程:从入门到精通的自动化工作流引擎实践指南
运维·人工智能·学习·自动化
HDO清风28 分钟前
CASIA-HWDB2.x 数据集DGRL文件解析(python)
开发语言·人工智能·pytorch·python·目标检测·计算机视觉·restful
weixin_4997715531 分钟前
Python上下文管理器(with语句)的原理与实践
jvm·数据库·python
weixin_4521595533 分钟前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
多米Domi01140 分钟前
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
开发语言·数据结构·python·算法·leetcode·面试
深蓝海拓1 小时前
PySide6从0开始学习的笔记(二十六) 重写Qt窗口对象的事件(QEvent)处理方法
笔记·python·qt·学习·pyqt
纠结哥_Shrek1 小时前
外贸选品工程师的工作流程和方法论
python·机器学习
测试_AI_一辰1 小时前
Agent & RAG 测试工程05:把 RAG 的检索过程跑清楚:chunk 是什么、怎么来的、怎么被命中的
开发语言·人工智能·功能测试·自动化·ai编程
小汤圆不甜不要钱1 小时前
「Datawhale」RAG技术全栈指南 Task 5
python·llm·rag