这里写自定义目录标题
Python教程 使用openpyxl库来对excel表格进行读写#
说明:最近因为工作需要,经常需要处理excel表格,为了提高效率通常需要编写python脚本对excel表格进行处理。openpyxl库是一个用来处理xlsx格式表格的python的第三方库。这边博文记录了openpyxl的简单使用教程,也算是我学习过程中的一个笔计。
原英文turorial的连接在这里:https://openpyxl.readthedocs.io/en/stable/tutorial.html
#创建一个新的工作表,工作表名字叫‘我的工作表’,默认插入在所有sheet的最后
ws1 = wb.create_sheet('我的工作表')
#创建一个新的工作表,工作表的名字叫"我的工作表0",插在所有sheet最前面
ws2 = wb.create_sheet('我的工作表0',0)
#创建一个新的工作表,工作表的名字叫做“我的倒数第二个工作表”,插在倒数第一位置前
ws3 = wb.create_sheet('我的倒数第二个工作表',-1)
#更改工作表的名字
ws.title = '我最初的工作表'
#更改工作表标签的颜色可以通过传一个RGB参数给下面的属性
ws.sheet_properties.tabColor = "1072BA"
#可以通过工作表的名字从工作薄中选出想要操作的工作表
ws4 = wb["我最初的工作表"]
#可以通过Workbook.sheetname属性查看工作表中每个工作表的名字
#输出的是所有工作表名字组成的一个列表
print(wb.sheetnames)
#可以采用for循环来遍历一个工作薄中的所有工作表
for sheet in wb :
print(sheet.title)
#复制一份工作表,(注意复制工作表只能在同一个excell文件内复制,不能再不同文件之间复制)
#复制的工作表默认会在原来的表名字上加一个coye作为新的表名字,并插在所有表的最后
source = wb.active
target = wb.copy_worksheet(source)
print(wb.sheetnames)
#取一个表格中的一个单元(第4行,第A列),c指向这个单元
c = ws['A4']
print(c)
print(c.value)
#修改一个表格中一个单元格的内容(第4行,第A列),如果该单元格没有,那么会先创建再赋值
ws['A4'] = '我给A4赋值啦~'
#也可以采用inrksheet.cell的方式来获取单元格;第4行第2列单元格内容是10,并且d指向这个单元格
d = ws.cell(row=4,column=2,value=10)
print(d.value)
#批注:注意,只要是访问或者给一个单元格赋值,就会在内存中创建一个单元格
#即使啥也不做,这个单元格也会被创建在内存里面,例如下面这个例子就会在内存中创建100x100个cell
#如果一个单元格被直接读取或者是创建的时候没有指定初始值,那么其初始的value是None
for x in range(1,101):
for y in range(1,101):
ws.cell(row=x,column=y)
#同时获取很多单元格
#可以通过切片的方式获取一大片单元格(获取第1行第A列到第2行第C列之间的所有单元格)
cell_range = ws['A1':'C2']
#可以按列获取1列或者多列
colC = ws['C']
col_range = ws['C:D']
#可以按行获取1行或者多行
row10 = ws[10]
row_range = ws[5:10]
#也可以采用Worksheet.iter_rows()方法来迭代行;
#iter_rows()方法是迭代行
for row in ws.iter_rows(min_row=1,max_row=2,min_col=1,max_col=3):
for cell in row:
print(cell)
#同样的也可以采用Worksheet.iter_cols()方法来迭代列;
#iter_cols()是迭代列,注意,因为性能限制在read-only模式下,Worksheet.iter_cols()方法不可用
for col in ws.iter_cols(min_col=1,max_col=2,min_row=1,max_row=3):
for cell in col:
print(cell)
#如果想要迭代一个文件的所有的行或者所有的列,可以采用Worksheet.rows或Worksheet.columns
#注意,因为性能限制,在read-only模式下,Worksheet.columns 不可用
ws = wb.active
ws['C9'] = 'hello world'
print(tuple(ws.rows))
print(tuple(ws.columns))
#Values only模式
#假如,你只是需要工作表中的内容,那么可以通过Worksheet.values属性来访问
#这个迭代器是直接按行来返回工作表中每个单元格的值
for row in ws.values:
for value in row:
print(value)
#上面的Worksheet.iter_rows()和Worksheet.iter_cols()迭代的时候也可以指定values_only参数为True,来只返回单元格内容
for row in ws.iter_rows(min_row=1,max_row=9,min_col=1,max_col=3,values_only=True):
print(row)
#给某一个单元格赋值,如果我们拿到一个Cell,给它的value属性赋值即可
c.value = 'hello,world'
print(c.value)
d.value = 3.14
print(d.value)
#保存文件
#最简单的且最安全的保存工作薄的方式就是调用工作薄的Workbook.save()方法
#但是要注意,如果文件已经存在,这个方法会直接覆盖掉已有文件,而且不会报警
#另外,文件的尾缀不一定非要是.xlsx;单是你不用这个后缀,用其它工具打开文件的时候可能会有啥问题
wb.save('tutorial.xlsx')
#load一个文件(类似于openfile)
from openpyxl import load_workbook
wb2 = load_workbook('tutorial.xlsx')
print(wb2.sheetnames)
这篇博客介绍了如何使用Python的openpyxl库来高效处理xlsx格式的Excel表格,包括读取和写入数据,是作者学习过程中的笔记。

1万+

被折叠的 条评论
为什么被折叠?



