使用openpyxl读写excel文件

读写excel是日常工作中的高频操作,openpyxl模块支持对后缀为xlsx的excel文件进行读写,注意,它不支持后缀为xls的文件。

所有模块对excel进行操作,都会按照如下所示的层级进行处理

1. workbook

2. sheet

3. row

4. column

5. cell

workbook称之为工作薄,是读写excel的第一步,一个excel文件对应1个工作博;sheet是excel表格中的各个子集,1个excel表格可以有多个sheet; row和column分别表示从行和列的角度处理excel表格;cell表示一个具体的单元格。

按照上述分类,读取excel的常用操作如下

1. 创建workbook

通过laod_workbook方法来读取excel文件,创建工作薄,代码如下

>>> from openpyxl import load_workbook
>>> wb = load_workbook('input.xlsx')
2. 读取sheet

在工作薄的基础上,通过sheetnames属性可以获得各个sheet的名称,然后用字典的方式来访问各个sheet, 代码如下

>>> wb.sheetnames
['raw_genotype', 'format_genotype', 'input_NST']

>>> wb['raw_genotype']
<Worksheet "raw_genotype">

3. 读取row

通过代表行数的下标可以对整行进行访问,代码如下

>>> ws = wb['raw_genotype']

>>> ws[1]
(<Cell 'raw_genotype'.A1>, <Cell 'raw_genotype'.B1>, <Cell 'raw_genotype'.C1>)
# 切片操作
>>> ws[1:3]
((<Cell 'raw_genotype'.A1>, <Cell 'raw_genotype'.B1>, <Cell 'raw_genotype'.C1>), (<Cell 'raw_genotype'.A2>, <Cell 'raw_genotype'.B2>, <Cell 'raw_genotype'.C2>), (<Cell 'raw_genotype'.A3>, <Cell 'raw_genotype'.B3>, <Cell 'raw_genotype'.C3>))

如果需要按行遍历,可以通过iter_rows方法来操作,默认遍历所有的行,也可以通过参数限定行和列的范围,代码如下

>>> for row in ws.iter_rows():
...     print(row)

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

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

4. 读取column

与行对应,通过列名来访问整列,代码如下

>>> ws['A']
(<Cell 'raw_genotype'.A1>, <Cell 'raw_genotype'.A2>, <Cell 'raw_genotype'.A3>)
# 切片操作
>>> ws['A':'C']
((<Cell 'raw_genotype'.A1>, <Cell 'raw_genotype'.A2>, <Cell 'raw_genotype'.A3>), (<Cell 'raw_genotype'.B1>, <Cell 'raw_genotype'.B2>, <Cell 'raw_genotype'.B3>), (<Cell 'raw_genotype'.C1>, <Cell 'raw_genotype'.C2>, <Cell 'raw_genotype'.C3>>))

遍历列的方法为iter_cols, 代码如下

>>> for col in ws.iter_cols():
... print(col)

>>> for col in ws.iter_cols(min_col=1, max_col=3):
... print(col)

>>> for col in ws.iter_cols(min_col=1, max_col=3, min_row=2, max_row=4):
... print(col)

5. 读取cell

读取单元格有以下两种方式,通过方括号的索引,或者cell方法的数字下标,代码如下

# 访问cell
>>> ws['E2']
<Cell 'raw_genotype'.E2>
# 访问cell
>>> ws.cell(row=2, column=5)
<Cell 'raw_genotype'.E2>

对于单元格,我们的常用操作是获取和设置其值,代码如下

# 访问cell的值
>>> ws['E2'].value
'Allele 2'
>>> ws.cell(row=2, column=5).value
'Allele 2'

# 设置cell的值
>>> ws['E2'] = 3
>>> ws.cell(row=2, column=5).value = 10

将以上基本操作进行组合,就可以快速的读取一个excel文件,获得我们需要的信息,模板如下

from openpyxl import load_workbook
wb = load_workbook('input.xlsx')
ws = wb['sheet1']

for row in ws.iter_rows():
    for cell in row:
        print(cell.value)

wb.close()

对于写入excel而言,需要在workbook和sheet的生成过程中,稍加改变,模板如下

from openpyxl import Workbook
wb = Workbook()
ws = wb.create_sheet()
for row in range(10):
    ws.append([i for i in range(10)])

wb.save('out.xlsx')

写入excel时,首先创建workbook, 然后通过create_sheet创建sheet, append方法用于追加一行的内容,当然也可以依次指定各个单元格,最后用save方法保存为excel文件。

以上就是基本的读写excel的技巧,除此之外,该模块也支持excel表格的合并/拆分,插入图片,设置单元格样式等个性化操作,更多详细用法请参考官方文档。

·end·
(0)

相关推荐

  • 【python】解析Excel中使用xlrd库、xlwt库操作,读取excel进阶完整脚本实例(四)

    本次主要通过脚本展现使用xlrd库.xlwt库的完整操作,对象是比较常见的表格,通过这两个脚本的学习,实现对Excel的进阶操作. 首先,我们定义一个表格example_excel.xls,如图所示: ...

  • python 读写excel工具openPyXL

    openPyXL 是excel读写python包,支持 Excel 2010 xlsx/xlsm/xltx/xltm 格式文件.参见:https://openpyxl.readthedocs.io/e ...

  • python word excel ppt自动化办公教程

    模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook('test.xlsx') 输出表单名字 # 输出工 ...

  • 数据分析课程笔记

    大家好呀,今天是数据分析课程的第 6 课,用 Python 操作 excel 和 word. 在操作 excel 部分,我们会学习第三方模块 openpyxl 的基本使用,了解工作表的创建,掌握 ex ...

  • Python开发 之 Python3读写Excel文件(较全)

    Python3读写Excel文件 1.Python中几种常用包比较 2.用xlrd包读取Excel文件 2.1.用法 2.1.1.引用包 2.1.2.打开文件 2.1.3.获取你要打开的sheet文件 ...

  • 通过xlrd和xlwt模块读写excel文件

    xlrd模块用于读取excel文件,xlwt模块用于写入excel文件,二者搭配,可以灵活的操作excel文件.相比openpyxl模块,xlrd和xlwt可以操作不仅可以操作后缀为xlsx的文件,也 ...

  • R语言 | 读写txt、csv、excel文件

    [更新~] Python网络爬虫与文本数据分析 前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代 ...

  • 一定要学!Excel文件未保存恢复的小技巧~

    如果不小心你的文件未保存,就被关闭了,可通过文件 - 信息 - 管理工作簿 - 恢复未保存的工作簿,来解决该问题. 打开最新的文件,点击另存为,即可解决. 在Excel当中,还有很多类似小技巧. 1. ...

  • 教学管理菜鸟成长记40-找不同下集之两个EXCEL文件的差异

    关键词:EXCEL2016:SpreadshCompare插件:EXCEL文件比较:操作难度***** 早上8点,二师兄准时开机,因为他知道小菜肯定又会一大早就紧急求助,果然事情的发展就如同睿智的二师 ...

  • 怎么把100多个EXCEL文件合并成一个

    2020-07-10·策划专员 可以通过更改excel代码来合并多个文件. 详细步骤: 1.新建一个文件夹. 2.将要合并的表格放到里面. 3.新建一个表格. 4.用excel打开. 5.右击Shee ...

  • 怎么在ppt里加入一个excel文件

    如何在PPT里加入一个excel文件呢?下面是具体的操作方法. 打开一个PPT文档. 单击工具栏上的插入. 单击选择附件. 在出现的插入对话框中,单击选中需要插入的excel文件. 单击打开即可在PP ...

  • 在两个Excel文件之间传递数据而无须打开Excel文件

    原创 范吉 完美Excel 2018-10-11 经常有人需要从关闭的工作簿文件中取值,省掉打开工作簿的操作.而此处介绍的技巧,所涉及到的工作簿文件都不需要打开,就可以完成将某工作簿文件中的数据迁移到 ...