ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

20220807python学习

2022-08-07 14:04:32  阅读:209  来源: 互联网

标签:Sheet openpyxl column 单元格 学习 20220807python sheet wb


本篇文章代码来自《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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有