python——openpyxl模块

openpyxl模块

    • 介绍
    • 安装
  • 一、创建文件
    • 1.创建新工作表
    • 2.更改工作表名称
    • 3.查看工作表的名称
    • 4.创建工作表的副本
  • 二、读取数据
    • 1.读取所有数据
    • 2.按行读取
    • 3.读取单元格数据
  • 二、写入文件
    • 1.写入单元格
    • 2.整行写入
    • 3.保存文件
  • 二、常用用法
    • 1.编写工作簿
    • 2.合并/取消合并单元格

介绍

openpyxl 是一个 Python 库,用于读/写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。

它诞生于缺乏现有的库,可以从Python本地读取/写入 Office Open XML 格式。

安装

使用 pip 安装 openpyxl

pip install openpyxl

官方文档

一、创建文件

1.创建新工作表

#只需导入类:Workbook
from openpyxl import Workbook
wb = Workbook()

 # 当前激活的工作表
ws = wb.active


#创建新工作表:Workbook.create_sheet()
ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position

注意:在内存中创建工作表时,它不包含任何单元格。他们是 首次访问时创建。

2.更改工作表名称

工作表在创建时会自动为其命名。 它们按顺序编号(表、表1、表2等)。 您可以随时使用属性更改此名称:Worksheet.title

ws.title = "New Title"

为工作表命名后,可以将其作为工作簿的键:

ws3 = wb["New Title"]

3.查看工作表的名称

可以使用属性查看工作簿的所有工作表的名称Workbook.sheetname

print(wb.sheetnames)
['Sheet2', 'New Title', 'Sheet1']

可以循环浏览工作表

 for sheet in wb:
	print(sheet.title)

4.创建工作表的副本

可以在单个工作簿中创建工作表的副本:

Workbook.copy_worksheet()方法:

source = wb.active
target = wb.copy_worksheet(source)

注意:

  • 仅单元格(包括值、样式、超链接和注释)和 某些工作表属性(包括尺寸、格式和 属性)被复制。所有其他工作簿/工作表属性 不被复制 - 例如图像、图表。
  • 您也不能在工作簿之间复制工作表。您无法复制 工作簿以只读或只写模式打开时为工作表。

二、读取数据

1.读取所有数据

import openpyxl

# 打开excel
excel = openpyxl.load_workbook('apis.xlsx')  # 有路径应带上路径
# 使用指定工作表
sheet = excel.active  # 当前激活的工作表
# sheet = excel.get_sheet_by_name('Sheet1')
# 读取所有数据
print(list(sheet.values))  # sheet.values 生成器
print(sheet.max_column)  # 最大列数
print(sheet.max_row)  # 最大行数

2.按行读取

# 按行读取
for row in sheet.iter_rows(min_row=1, min_col=1, max_col=3, max_row=3): 
    print(row)
# 读取标题行
for row in sheet.iter_rows(max_row=1):
    title_row = [cell.value for cell in row]
print(title_row)
# 读取标题行以外数据
for row in sheet.iter_rows(min_row=2):
    row_data = [cell.value for cell in row]
    print(row_data)

3.读取单元格数据

# 读取单元格数据
print(sheet['A1'].value)

print(sheet.cell(1,1).value) 

二、写入文件

1.写入单元格

# 写入单元格
sheet['F2'] = 'PASS'
result_col = title_row.index('result')+1  # 'result'所在的列号
sheet.cell(3, result_col).value = 'PASS'

2.整行写入


# 整行写入
new_row = ['post-xml接口', 'post', 'https://httpbin.org/post']
sheet.append(new_row)

3.保存文件

保存工作簿的最简单和最安全的方法是使用对象的方法:Workbook.save()Workbook

# 保存文件,也可覆盖原文件
wb = Workbook()
wb.save('balances.xlsx')
#此操作将覆盖现有文件,而不会发出警告。

二、常用用法

1.编写工作簿

 from openpyxl import Workbook
 from openpyxl.utils import get_column_letter

wb = Workbook()

dest_filename = 'empty_book.xlsx'

 # 当前激活的工作表
ws1 = wb.active
#为工作表命名
ws1.title = "range names"

 for row in range(1, 40):
    ws1.append(range(600))

#创建工作表2
 ws2 = wb.create_sheet(title="Pi")

 ws2['F5'] = 3.14

ws3 = wb.create_sheet(title="Data")
 for row in range(10, 20):
	 for col in range(27, 54):
        _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

 print(ws3['AA10'].value)

#保存文件
wb.save(filename = dest_filename)

2.合并/取消合并单元格

合并单元格时,除左上角单元格外的所有单元格都将从 工作表。为了携带合并单元格的边界信息,边界单元格的 合并的单元格被创建为始终具有值 None 的合并单元格。

 from openpyxl.workbook import Workbook

 wb = Workbook()
 ws = wb.active

 ws.merge_cells('A2:D2')
ws.unmerge_cells('A2:D2')

 # or equivalently
 ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
 ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

(非作者允许,严禁转载)

你可能感兴趣的:(python,python)