openpyxl是一个第三方库,可以处理xlsx格式的Excel文件。
安装:
pip install openpyxl
对如下excel进行读取操作,如图:
from openpyxl import load_workbook
wb = load_workbook("123.xlsx")
print(wb.get_sheet_names())
#>>>[Sheet111,Sheet222,Sheet333]
a_sheet = wb.get_sheet_by_name("Sheet111")
print(a_sheet.title)
#>>>Sheet111
a1 = a_sheet['A1']
print(f'({a1.column}, {a1.row}) is {a1.value}')
#>>>3
a1_too =a_sheet.cell(row = 4, column = 2)
print(a1_too.value)
#>>>fvf
# 获得最大列和最大行
print(a_sheet.max_row)
#>>>6
print(a_sheet.max_column)
#>>>4
for row in a_sheet.rows:
for cell in row:
print(cell.value,end = ' ')
print('
')
'''
>>>
3 3 None None
4 None None None
5 None fv fv
6 fvf None None
7 None None None
909 None None None
'''
#获取某一行或者某一列的数据
for cell in list(a_sheet.rows)[3]:
print(cell.value,end = " ")
#>>>6 fvf None None
#获取任意区间的单元格
for i in range(2, 4):
for j in range(1, 3):
print(a_sheet.cell(row=i, column=j).value,end = " ")
#>>>4 None 5 None
对文件的写入操作:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
#创建一张新的表
ws1 = wb.create_sheet("botoo")
#写入数据
ws1["a1"]=10086
#或者
ws1["a2"].value= 1111111
#为B列创建数据 1~19
for i in range(1,20):
ws1["B%d" %i] .value= i
#为20行创建数据 1~10
for i in range(1,20):
ws1.cell(column = i, row = 20).value = i
wb.save("这是python写入3.xlsx")
效果如下:
*当需要对已有文件进行更改的时候,需要使用:
>>> from openpyxl import load_workbook
>>>wb2 = load_workbook('test.xlsx')
>>> print wb2.get_sheet_names()
['Sheet2', 'New Title', 'Sheet1']
否则文件内容会被覆盖。
参考文章:
http://openpyxl.readthedocs.io/en/stable/
https://blog.csdn.net/hunter_wyh/article/details/78498323
http://www.pythontab删去汉字.com/html/2018/pythonhexinbiancheng_0503/1286.html
(不知道为什么Python中文开发社区的链接放不上去)