脚本宝典收集整理的这篇文章主要介绍了openpyxl模块,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
openpyxl写操作
# d = {"name": "tony", "age": 16, "address": "北京"}
d2= [{"name": "tony", "age": 16, "address": "北京"},{"name": "tom", "age": 18, "address": "安徽"},{"name": "Bob", "age": 24, "address": "未知"}]
from openpyxl import Workbook
wb = Workbook() # 创建一个工作表
ws = wb.active # ws操作sheet页
ws1 = wb.create_sheet('Mysheetfirst', 0) #创建sheet
# 表头
ws1['A1'] = 'name'
ws1['B1'] = 'age'
ws1['C1'] = 'address'
# dict_items = d.items()
# 写数据
index = 1
for dic in d2:
index+=1
ws1.cell(index, 1).value = dic.get("name")
ws1.cell(index, 2).value = dic.get("age")
ws1.cell(index, 3).value = dic.get("address")
wb.save('test.xlsx')
写入单元格的集中方法
# 使用索引定位单元格然后复制
sheet['A1'] = 'hello word'
print(sheet['A1'].value)
#循环遍历给每行单元格赋值
sheet1 = wb.create_sheet('range name') # 首先创建一个工作表
for row in range(1, 50): # 定义输入行数有50行
sheet1.append(range(10)) # 给每行的数据为0-9
# 循环给每一行添加自然数序列
sheet1 = wb.create_sheet('range name')
for row in range(1, 50):
rows = sheet1.append(range(10))
#通过一个列表给单元格添加数据
sheet2 = wb.create_sheet('List')
row_list = [
['Number', 'step1', 'step2'],
[2, 50, 30],
[3, 40, 50],
[4, 25, 20],
[5, 15, 9],
[6, 12, 31]
]
for row in row_list:
sheet2.append(row)
#指定行列范围写入数据
sheet3 = wb.create_sheet(title='data sheet')
for row in range(3, 20):
for col in range(10, 30):
sheet3.cell(column=col, row=row, value=get_column_letter(col))
#直接使用save()函数
wb.save('filename')
# 如果文件是加载进来的,建议保存的时候另外起一个名称,不要损坏源文件
wb = openpyxl.load_workbook('filename')
wb.save('other filename')
# 默认创建的表单,是直接追加在末尾的
wb.create_sheet('Lastsheet')
print(wb.sheetnames)
['mysheet', 'Lastsheet']
# 我们也可以指定索引
wb.create_sheet('First sheet', index=0)
wb.create_sheet('Middle sheet', index=1)
print(wb.sheetnames)
['First sheet', 'Middle sheet', 'my sheet']
# 删除表单
wb.remove_sheet(wb.get_sheet_by_name('Middle sheet'))
print(wb.sheetnames)
['First sheet', 'Middle sheet', 'my sheet']
['First sheet', 'my sheet']
# 虽然也可以运行成功,但是编译器还是报了一点错
# 也可以直接使用del删除
del wb['Middle sheet']
openpyxl读操作
load_workbook()
load_workbook()函数接受文件名,返回一个 workbook 数据类型的值。这个 workbook 对象代表这个 Excel 文件,有点类似 File 对象代表一个打开的文本文件。
>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>
get_sheet_names()
可以取得工作簿中所有表名的列表
>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> wb.get_sheet_names()
['Sheet1', 'Sheet2', 'Sheet3']
get_sheet_by_name()
每个表由一个 Worksheet 对象表示,可以通过向工作簿方法 get_sheet_by_name()
传递表名字符串获得。
>>> sheet = wb.get_sheet_by_name('Sheet3')
>>> sheet
<Worksheet "Sheet3">
属性:active
取得工作簿的活动表。活动表是工作簿在 Excel 中打开时出现的工作表。在取得 Worksheet对象后,可以通过 title 属性取得它的名称。
>>> anotherSheet = wb.active
>>> anotherSheet.title
'城市交通连通性'
对象:cell
>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb.get_sheet_by_name('Sheet1')
>>> sheet['A1'] <Cell Sheet1.A1>
>>> sheet['A1'].value datetime.datetime(2015, 4, 5, 13, 34, 2)
>>> print(sheet['A1'].value) 2015-04-05 13:34:02
>>> c = sheet['B1']
>>> c.value 'Apples'
>>> 'Row ' + str(c.row) + ', Column ' + str(c.column) + ' is ' + c.value
'Row 1, Column 2 is Apples'
>>> 'Cell ' + c.coordinate + ' is ' + c.value
'Cell B1 is Apples'
>>> sheet['C1'].value
73
row
:cell
对象的行column
:cell
对象的列coordinate
:cell
对象的位置信息cell()
调用表的cell
方法时,可以传入整数作为 row
和 column
关键字参数,也可以得到一个单元格。第一行或第一列的整数是 1,不是 0。
>>> sheet.cell(row=1, column=2)
<Cell Sheet1.B1>
>>> sheet.cell(row=1, column=2).value
'Apples'
>>> for i in range(1, 8, 2):
print(i, sheet.cell(row=i, column=2).value)
1 Apples
3 Pears
5 Apples
7 Strawberries
属性:max_row和max_column
>>> sheet.max_row
7
>>> sheet.max_column
3
column_index_from_string()
>>> from openpyxl.utils import get_column_letter, column_index_from_string
>>> column_index_from_string('AA')
27
get_column_letter()
>>> get_column_letter(1)
'A'
>>> get_column_letter(900)
'AHP'
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb.get_sheet_by_name('Sheet1')
>>> get_column_letter(sheet.max_column)
'C'
Worksheet 对象切片操作
取得电子表格中一行、一列或一个矩形区域中的所有Cell 对象。然后可以循环遍历这个切片中的所有单元格。
>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb.get_sheet_by_name('Sheet1')
>>> tuple(sheet['A1':'C3'])
((<Cell Sheet1.A1>, <Cell Sheet1.B1>, <Cell Sheet1.C1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>, <Cell Sheet1.C2>), (<Cell Sheet1.A3>, <Cell Sheet1.B3>, <Cell Sheet1.C3>))
>>> sheet['A1':'C3']
((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>), (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>), (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>))
>>> for rowOfCellObjects in sheet['A1':'C3']:
for cellObj in rowOfCellObjects:
print(cellObj.coordinate, cellObj.value)
print('--- END OF ROW ---')
A1 2015-04-05 13:34:02
B1 Apples
C1 73
--- END OF ROW ---
A2 2015-04-05 03:41:23
B2 Cherries
C2 85
--- END OF ROW ---
A3 2015-04-06 12:46:51
B3 Pears
C3 14
--- END OF ROW ---
这个元组包含 3 个元组:每个元组代表 1 行,从指定区域的顶部到底部。这 3个内部元组中的每一个包含指定区域中一行的 Cell 对象,从最左边的单元格到最右边。所以总的来说,工作表的这个切片包含了从 A1 到 C3 区域的所有 Cell 对象,从左上角的单元格开始,到右下角的单元格结束。
属性:columns 和 rows
sheet.columns` 和 `sheet.rows` 是 `generator
for cellObj in list(sheet.columns)[1]:
print(cellObj.value)
Apples
Cherries
Pears
Oranges
Apples
Bananas
Strawberries
Workbook()
>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.get_sheet_names()
['Sheet']
add_image()
单元格中插入图片
from openpyxl.drawing.image import Image
img_file = ".//images//1.jpg"
img = Image(img_file)
sheet.column_dimensions['B'].width = 15.0
sheet.row_dimensions[row].height = 80
img.width = 100.0
img.height = 100.0
sheet.add_image(img, 'B{}'.format(row))
注意:这里的Image
是从openpyxl.drawing.image
导入的,不是PIL
以上是脚本宝典为你收集整理的openpyxl模块全部内容,希望文章能够帮你解决openpyxl模块所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。