前提
偶然一次遇到要处理大量的表格- -,处理步骤不难但是大量重复性劳作比较麻烦,尝试使用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() 该函数会在最下面一行内没有任何数据的位置写入数据
待续。。。
标签:xlsx,基于,openpyxl,Excel,ws,file,path,wb From: https://www.cnblogs.com/daixx/p/17593298.html