openpyxl 的一些使用方法整理 2.6.3版本


由于本人早期的参考书版本太低,很多用法都不一样了,决定到官网整理一下。

文件处理

创建文件


建立新的工作表

from openpyxl import Workbook
wb = Workbook()

载入sheet

ws = wb.active #默认只访问第一个sheet

建立更多sheet

ws1 = wb.create_sheet('Sheet1') #默认在尾部增加
ws2 = wb.create_sheet('Sheet2',num) #在num位置增加

sheet命名

ws.title = "New title"

更改背景颜色
使用RRGGBB的代码形式

ws.sheet_properties.tabColor = '1072BA'

使用sheet名称选择表格

ws3 = wb['New Title']

检索所有sheet名称

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

复制一个活页

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

读取文件

与创建文件类似

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
>>> print wb2.sheetnames
['Sheet2', 'New Title', 'Sheet1']

存储文件

最简单和靠谱的方法就是Workbook.save()

但具体有什么不靠谱的方法,官方也没说
咱也不知道,咱也不敢问

wb = Workbook()
wb.save('balances.xlsx')

数据读写


处理一个单元格

利用行列关系读写

c = ws['A4']
ws['A4'] = 4

也可以使用cell(‘行’,‘列’,‘赋值’)

此类方法遍历范围较大时候,会增加内存负担,即在当前的内存中创建所有的区域

d = ws.cell(row=4, column=2, value=10)

处理多个单元格

根据范围召唤单元格

celll_range = ws['A1':'C2']

行和列的召唤

colC = ws['C']
col_range = ws['C:D']
row10 = ws[10]
row_range = ws[5:10]

也可以使用Worksheet.iter_rows()

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
...    for cell in row:
...        print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2>

Worksheet.iter_cols()同理
注:当表格以只读模式打开时该方法不适用

如果想要遍历所有的行和列,使用Worksheets.rows(or columns)(比较实用)

>>> ws = wb.active
>>> ws['C9'] = 'hello world'
>>> tuple(ws.rows)
((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),
(<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),
(<Cell Sheet.A3>, <Cell Sheet.B3>, <Cell Sheet.C3>),
(<Cell Sheet.A4>, <Cell Sheet.B4>, <Cell Sheet.C4>),
(<Cell Sheet.A5>, <Cell Sheet.B5>, <Cell Sheet.C5>),
(<Cell Sheet.A6>, <Cell Sheet.B6>, <Cell Sheet.C6>),
(<Cell Sheet.A7>, <Cell Sheet.B7>, <Cell Sheet.C7>),
(<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),
(<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))

Worksheet.columns 同理

读取单元格内容

如果只想调用一个表格的内容,可以使用Worksheet.values,这将遍历整个工作页然后返回每个单元格的内容

for row in ws.values:
   for value in row:
     print(value)

同时,*Worksheet.iter_rows()Worksheet.iter_cols()*都可以只读取数据,需要加入values_only的参数

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
...   print(row)

(None, None, None)
(None, None, None)

写入单元格内容

当调用的一个单元格的时候,便可以写入你想写入的数据

>>> c.value = 'hello, world'
>>> print(c.value)
'hello, world'

>>> d.value = 3.14
>>> print(d.value)
3.14

作为流(stream)储存

这部分内容没用过,不清楚,需要的兄弟可以到官网查找介绍。

所有示例均转自官网
参考网站:openpyxl官网教程

此外还有一个简单使用的教程示例,这个整理必要俺觉得不大,就看看时间了
参考网站:Simple usage

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值