编程语言
首页 > 编程语言> > 20220807python学习

20220807python学习

作者:互联网

本篇文章代码来自《Python编程快速上手——让繁琐工作自动化》

第13章:处理Excel表格

读取表格簿

openpyxl模块用于处理execel表格数据。

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>

openpyxl.load_workbook()函数接收文件名,并返回一个workbook数据类型的值。这个Workbook对象代表这个Execl文件。

要记住,example.xlsl必须在当前工作目录中。

取得表名称

使用sheetnames属性可以取得工作簿中所有表名的列表。

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> wb.sheetnames
['Sheet1', 'Sheet2', 'Sheet3']
>>> sheet = wb['Sheet3']
>>> type(sheet)
<class 'openpyxl.worksheet.worksheet.Worksheet'>
>>> sheet.title
'Sheet3'
>>> anotherSheet = wb.active
>>> anotherSheet
<Worksheet "Sheet1">

可使用Workbook对象的active属性来取得工作簿的活动表。在取得Worksheet对象后,可以通过title属性取得它的名称。

从表中取得单元格

有了Worhsheet对象后,就可以按名字访问Cell对象。

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb['Sheet1']
>>> sheet['A1'].value
'4/5/2015 1:34:02 PM'
>>> c = sheet['B1']
>>> c.value
'Apples'
>>> 'Row %s, Column %s is %s' % (c.row, c.column, c.value)
'Row 1, Column 2 is Apples'
>>> 'Cell %s is %s' % (c.coordinate, c.value)
'Cell B1 is Apples'
>>> sheet['C1'].value
73

Cell对象有一个value属性,它包含这个单元格中保存的值。Cell对象也有row、column和coordinate属性,额可以提供该单元格的位置信息。

>>> 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

可以通过Worksheet对象的max_row和max_column属性来确定表的大小。

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb['Sheet1']
>>> sheet.max_row
8
>>> sheet.max_column
4

请注意,max_column属性是一个整数,而不是Excel中出现的字母。

列字母和数字之间的转换

要从字母转换到数字,就调用openpyxl.utils.column_index_from_string()函数。

要从数字转换到字母,就调用openpyxl.utils.get_column_letter()函数。

>>> import openpyxl
>>> from openpyxl.utils import get_column_letter, column_index_from_string
>>> get_column_letter(1)
'A'
>>> get_column_letter(900)
'AHP'
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb['Sheet1']
>>> get_column_letter(sheet.max_column)
'D'
>>> column_index_from_string('A')
1

从表中取得行和列

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb['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>))
>>> for rowOfCellObjects in sheet['A1':'C3']:
...     for cellObj in rowOfCellObjects:
...         print(cellObj.coordinate, cellObj.value)
...     print('--- END  OF  ROW ---')
A1 4/5/2015 1:34:02 PM
B1 Apples
C1 73
--- END  OF  ROW ---
A2 4/5/2015 3:41:23 AM
B2 Cherries
C2 85
--- END  OF  ROW ---
A3 4/6/2015 12:46:51 PM
B3 Pears
C3 14
--- END  OF  ROW ---

要访问特定行或列的单元格的值,也可以利用Worksheet对象的rows和columns属性。这些属性必须被list()函数转换成列表,才能使用方括号和索引。

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb.active
>>> list(sheet.columns)[1]
(<Cell 'Sheet1'.B1>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.B6>, <Cell 'Sheet1'.B7>, <Cell 'Sheet1'.B8>)
>>> for cellObj in list(sheet.columns)[1]:
...     print(cellObj.value)
Apples
Cherries
Pears
Oranges
Apples
Bananas
Strawberries
None

写入Excel文档

创建并保存Excel文档

调用openpyxl.Workbook()函数以创建一个新的空Workbook对象。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.sheetnames
['Sheet']
>>> sheet = wb.active
>>> sheet.title
'Sheet'
>>> sheet.title = 'Spam Bacon Eggs Sheet'
>>> wb.sheetnames
['Spam Bacon Eggs Sheet']

当修改Workbook对象或它的工作表和单元格时,电子表格文件不会保存,除非你调用save()工作簿方法。

>>> import openpyxl
>>> wb = openpyxl.load_workbook('example.xlsx')
>>> sheet = wb.active
>>> sheet.title = 'Spam Spam Spam'
>>> wb.save('example_copy.xlsx')

创建和删除工作表

利用create_sheet()方法和del操作符可以再工作簿中添加或删除工作表。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.sheetnames
['Sheet']
>>> wb.create_sheet()
<Worksheet "Sheet1">
>>> wb.sheetnames
['Sheet', 'Sheet1']
>>> wb.create_sheet(index=0, title='First Sheet')
<Worksheet "First Sheet">
>>> wb.sheetnames
['First Sheet', 'Sheet', 'Sheet1']
>>> wb.create_sheet(index=2, title='Middle Sheet')
<Worksheet "Middle Sheet">
>>> wb.sheetnames
['First Sheet', 'Sheet', 'Middle Sheet', 'Sheet1']
>>> del wb['Middle Sheet']
>>> del wb['Sheet1']
>>> wb.sheetnames
['First Sheet', 'Sheet']

将值写入单元格

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb['Sheet']
>>> sheet['A1'] = 'Hello, world!'
>>> sheet['A1'].value
'Hello, world!'

公式

公式以一个等号开始,可以配置单元格让它包含通过其他单元格计算得到的值。

>>> sheet['B9'] = '=SUM(B1:B8)'

调整行和列

合并和拆分单元格

利用merge_cells()工作表方法,可以将一个矩形区域中的单元格合并为一个单元格。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>> sheet.merge_cells('A1:D3')
>>> sheet['A1'] = 'Twelve cells merged together'
>>> sheet.merger_cell('C5:D5')
>>> sheet['C5'] = 'Two merged cells'
>>> wb.save('merged.xlsx')

merge_cells()的参数是一个字符串,表示要合并的矩形区域左上角和右下角的单元格:'A1:D3'将12个单元格合并为一个单元格。

要拆分单元格,就调用unmerge_cells()工作表方法。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>> sheet.unmerge_cells('A1:D3')
>>> sheet.unmerger_cell('C5:D5')
>>> wb.save('merged.xlsx')

图标

openpyxl支持利用工作表中单元格的数据来创建条形图、折线图、散点图和饼图。

 

标签:Sheet,openpyxl,column,单元格,学习,20220807python,sheet,wb
来源: https://www.cnblogs.com/ColoDu/p/16558943.html