openpyxl

2021-03-12  本文已影响0人  SingleDiego

官方教程:https://openpyxl.readthedocs.io/en/stable/tutorial.html




创建新文件(workbook)
from openpyxl import Workbook

wb = Workbook()
ws = wb.active
wb.save("sample.xlsx")

以上代码会创建一个新的 xlsx 文件,并保存为 sample.xlsx 的文件名,并且会创建一个叫 Sheet 的工作表。

使用 ws = wb.active,能获取到该工作表(默认是获取第一个工作表) ,保存为 ws 对象来操作。




读取已存在的文件

使用 load_workbook 方法读取已有的 xlsx 文件:

from openpyxl import load_workbook

wb = load_workbook('sample.xlsx')




创建新工作表(worksheet)
  1. 使用 Workbook.create_sheet() 方法创建新工作表:
# 在最后位置创建(默认)
ws1 = wb.create_sheet("Mysheet") 

# 在首位创建
ws2 = wb.create_sheet("Mysheet", 0) 

# 在倒数第二位置创建
ws3 = wb.create_sheet("Mysheet", -1) 

也可以先创建工作表再修改名称:

ws = wb.create_sheet()
ws.title = "New Title"
  1. 定义工作表标签的颜色:
ws.sheet_properties.tabColor = "1072BA"
  1. 通过名称获取一个已存在的工作表:
ws3 = wb["New Title"]
  1. 通过 Workbook.sheetnames 方法获取所有工作表的名称:
>>> print(Workbook.sheetnames)
['Sheet', 'New Title']
  1. 复制工作表:
source = wb.active
target = wb.copy_worksheet(source)




数据操作
  1. 获取单元格对象

openpyxl 支持直接用 excel 表格的行列号获取单元格:

>>> c = ws['A1']
>>> print(c)

<Cell 'demo1'.A1>

要返回单元格的值:

>>> c.value
  1. 修改单元格的值
ws['A1'] = 'hello'

一个完整的例子:

from openpyxl import load_workbook

wb = load_workbook('sample.xlsx')
ws = wb['demo1']

ws['A1'] = 'hello'

wb.save("sample.xlsx")
  1. 使用 Worksheet.cell() 方法获取单元格对象
# 获取单元格
ws.cell(row=1, column=1)

# 获取并修改单元格的值
ws.cell(row=1, column=1, value=10)

4.获取多个单元格

cell_range = ws['A1': 'C2']

以上代码获取 A1 到 C2 这一区域的所有单元格,类似的操作还有:

>>> colC = ws['C']  # 获取C列所有

>>> col_range = ws['C:D']  # 获取CD列所有

>>> row10 = ws[10]  # 获取第10行所有

>>> row_range = ws[5:10] # 获取5到10行所有

使用 Worksheet.iter_rows() 方法也有同样的作用:

# 获取 A1—A5
for row in ws.iter_rows(min_row=1, max_row=5):
    for cell in row:
        print(cell)

# 获取 A1—C5
for row in ws.iter_rows(min_row=1, max_row=5, max_col=3):
    for cell in row:
        print(cell, cell.value)
  1. 遍历所有单元格

按行遍历:

for i in tuple(ws.rows):
    print(i)

按列遍历:

for i in tuple(ws.columns):
    print(i)
  1. 只获取值

使用 Worksheet.values 方法可只返回工作表的单元格的值

for i in ws.values:
    print(i)

值会以元组的形式返回。Worksheet.iter_rows()Worksheet.iter_cols() 方法都能带上 values_only 参数,从而只返回值。

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    print(row)
上一篇下一篇

猜你喜欢

热点阅读