这几天学习openpyxl模块(version 2.6.),并在工作中做了个简单的处理日常工作的程序,把学到的东西归纳一下,以便跟大家分享,和以后自己复习。 不足之处望大家指出:
**目录:
- 建立表格、打开表格。
- 表格的坐标和值
>>> import openpyxl
>>> openpyxl.__url__
'https://openpyxl.readthedocs.io' #官网文档
>>> openpyxl.__version__ #版本号2.6.3
'2.6.3'
1、建立表格、打开表格。
>>> from openpyxl import Workbook
>>> wb = Workbook() #注意此处为大写Workbook,并且要先导入该模块
>>> wb.sheetnames
['Sheet']
>>> wb.create_sheet(title='example',index=0) #从索引处建立一个新工作薄
<Worksheet "example">
>>> wb.create_sheet(title='example1',index=2)
<Worksheet "example1">
>>> wb.sheetnames
['example', 'Sheet', 'example1']
>>> ws = wb.active #获取活动sheet工作表
>>> ws
<Worksheet "example">
>>> wb['example1'] #获取指定工作表
<Worksheet "example1">
>>> ws = wb[wb.sheetnames[1]] #从所有工作表的索引获取工作表
>>> ws
<Worksheet "Sheet">
删除工作表:(注意:wb[‘Sheet’]为<Worksheet “Sheet”>,删除时只能删除Worksheet对象)
>>> wb.remove(wb['Sheet'])
>>> wb.sheetnames
['example', 'example1']
以下将会报错:
>>> wb.remove('example')
ValueError: 'example' is not in list
如果指定找开某工作薄的话:
>>> wb = openpyxl.load_workbook(r'C:\example\test.xlsx') #从绝对路径打开
>>> wb.sheetnames
['example', 'Sheet', 'example1']
>>> wb = openpyxl.load_workbook(‘test.xlsx') #或者从相对路径打开
这样便获取了工作薄和工作江薄里的表
2. 表格的坐标和值
from openpyxl.utils import get_column_letter,get_column_interval,column_index_from_string
#指定列的开始和结束的名字,返回有序列表,无所谓大小写
>>> get_column_interval('A','c')
['A', 'B', 'C']
>>> get_column_letter(6) #给定第几列,返回该列的字母
F
>>> column_index_from_string('S') #给定列的字母,返回该列为多少列的数字
19
>>> c = ws['c1'] #ws是wb['example1']
>>> c.coordinate #返回该工作表中指定某个单元格的坐标
'C1'
单元格赋值:
>>> ws['a1'] ='aaa'
>>> ws['a1'] #注意:这样只会返回该单元格的属性,这很重要,在遍历单元格的时间要注意
<Cell 'example1'.A1>
>>> type(ws['a1'])
<class 'openpyxl.cell.cell.Cell'>
>>> ws['a1'].value #要获取该单元格的值,需要使用.value
'aaa'
比如:
for cell in ws['a1':'c3']:
print(cell)
(<Cell 'example1'.A1>, <Cell 'example1'.B1>, <Cell 'example1'.C1>)
(<Cell 'example1'.A2>, <Cell 'example1'.B2>, <Cell 'example1'.C2>)
(<Cell 'example1'.A3>, <Cell 'example1'.B3>, <Cell 'example1'.C3>)
该方法返回一个包含分了行的元组,且为单元格的属性值,不是值。
要遍历单元格的值,需要这样:
>>> for cell in ws['a1':'c3']:
for i in cell:
print(i.value,end=' ')
print('')
aaa None None
None None None
None None cccc
>>> for i in range(5):
ws.append(range(20,30)) #批量加入后我们看下效果
>>> wb.save('test.xlsx') #保存(注意,保存时如果名字相同会不提醒且直接覆盖原文件)
#所以保存时最好换一个名字,如:test_copy.xlsx’
#如果需要覆盖保存,那先确保原来的excel文件为关闭的,否则报错
PermissionError: [Errno 13] Permission denied: 'test.xlsx'
内容太多,下一章归纳
3. 表格值的属性
4. 合并、拆分单元格
5. 字体属性
6. 单元格属性