当前位置: 首页 > news >正文

自动化办公|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 的自动化功能提升生产力。这种方法适用于数据分析、报表生成和企业自动化任务。

相关文章:

  • 《从Kokoro看开源语音模型的“无限可能”》:此文为AI自动生成
  • ros1 noetic 程序编译总是报节点程序找不到问题
  • 国高材服务:新能源汽车连接器电气腐蚀性能评价
  • C++ Primer 再探迭代器
  • DeepEP:开源通信库的高效专家并行计算解决方案
  • Deepseek的缺陷
  • 在docker中运行R容器,并在Windows下的vscode中使用该R
  • win11本地部署deepseek大模型(安装ollama+docker+open-webui)最终实现自己的项目可通过API调用投喂数据后的模型
  • kiln微调大模型-使用deepseek R1去训练一个你的具备推理能力的chatGPT 4o
  • 【十二】Golang 映射
  • 【多模态大模型学习】位置编码的学习记录
  • 【FFmpeg】拉流
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第四节:请求链路中代理的作用
  • 设计模式-行为型-责任链模式
  • easy云盘笔记
  • 总结一下Java中的Synchronized同步锁的常见面试题
  • Java基础第14天-坦克大战【1】
  • 【C++修炼之路】C++类与对象:面向对象编程的第一步
  • 【JavaEE】SpringMVC获取HTTP中的元素
  • C# 弃元的使用
  • 北京13日冰雹过后,已受理各险种报案近3万件
  • 市场监管总局等五部门约谈外卖平台企业
  • 习近平举行仪式欢迎巴西总统卢拉访华
  • 2025年上海科技节5月17日启动,56家重点实验室和大科学设施将向公众开放
  • 退休10年后,70岁成都高新区管委会原巡视员王晋成被查
  • 年轻小将绽放光芒!中国短跑男女接力队直通东京世锦赛