基于openpyxl处理.xlsx过程遇到的小问题

发布时间 2023-08-16 17:53:23作者: Mr_Dai

前提

偶然一次遇到要处理大量的表格- -,处理步骤不难但是大量重复性劳作比较麻烦,尝试使用python来处理,以下是在过程中遇到的一些小问题记录一下
基于Python 3.10.11,使用openpyxl库

openpyxl库的简单使用介绍

安装openpyxl库

pip install openpyxl
1、打开/创建 一个工作簿并添加数据
import openpyxl

# 打开已有文件
# file_path = "E:\xxx\xxx\Examples.xlsx"
file_path = "Examples.xlsx"
wb = openpyxl.load_workbook(file_path)

# 创建一个新的Excel文件
# wb = openpyxl.Workbook() 

# 获取工作表
ws = wb.active
print("选择的工作表:", ws)

# 在工作表中添加数据
ws['A1'] = 'Hello'
ws['B1'] = 'World!'
ws['C2'] = 11
ws['D2'] = 22

# 保存  不保存上面做的更改是不会写入到文件中的
wb.save(file_path)

第一个坑 wb.active这个属性,在网上找资料时介绍这个是获取默认的工作表,但在实际使用中感觉应该是获取“活动”的工作表(这里可能是本人理解失误导致的)
例如新建一个Excel后第一次执行上述代码数据会正常写入了对应位置然后打印
>>>选择的工作表: <Worksheet "Sheet1">
此时如果打开Excel表格,无论是否进行数据更改只要选择其他sheet页面后保存,数据会写入在保存前选择的sheet页面中
选择了Sheet3页面,再执行上述的代码会变成输出
>>>选择的工作表: <Worksheet "Sheet3">

2、打开现有的工作簿并读取数据
import openpyxl

# 打开现有的工作簿
file_path = "Examples.xlsx"
wb= openpyxl.load_workbook(file_path)

# 获取指定的工作表
ws= wb["Sheet1"]

# 读取单元格数据
value1 = ws['A1'].value # 通过索引获取数据
value2 = ws.cell(row=2, column=3).value # 第二行第3列

print(value1)  # 输出:Hello
print(value2)  # 输出:11

ws.cell(row=2, column=3).value中row对应Excel的行column对应Excel的列,需要注意Excel中行列都是从1开始的,没有第0行/列

3、打开现有的工作簿并写入一行数据
import openpyxl

new_row_data = ["Dai", 23, "boy"]

# 打开现有的工作簿
file_path = "Examples.xlsx"
wb = openpyxl.load_workbook(file_path)

# 获取指定的工作表
ws = wb["Sheet1"]

# 添加一行数据
ws.append(new_row_data)

wb.save(file_path)

ws.append() 该函数会在最下面一行内没有任何数据的位置写入数据

待续。。。