Openpyxl操作Excel教程

Posted by 石坤 on 2019-03-03

在这篇教程中我们会想你展示如何使用Python的openpyxl库来控制Excel文件

Openpyxl

openpyxl是一个Python库,可以用来读写Excel 2010 xlsx/xlsm/xltx/xltm 文件.

Excel xlsx

在这篇教程中,我们将会处理xlsx文件.xlsx是XML电子表格文件格式的一种扩充.xlsx文件支持宏.

使用pip3安装openpyxl

1
$ sudo pip3 install openpyxl

点击并拖拽以移动

创建一个新文件

在第一个 例子中,我们将会使用openpyxl创建一个新的xlsx文件

1
write_xlsx.py

点击并拖拽以移动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/python3

from openpyxl import Workbook
import time

book = Workbook()
sheet = book.active

sheet['A1'] = 56
sheet['A2'] = 43

now = time.strftime("%x")
sheet['A3'] = now

book.save("sample.xlsx")

点击并拖拽以移动

在这个例子中,我们创建了一个新的xlsx文件.我们往三个cells中写入数据

1
from openpyxl import Workbook

点击并拖拽以移动

从openpyxl中引入了Workbook这个类.Workbook是这个文档所有组成部分的一个容器.

1
book = Workbook()

点击并拖拽以移动

我们创建了一个新的Workbook.一个Workbook被创建的时候,至少生成一个worksheet

1
sheet = book.active

点击并拖拽以移动

我们引用了激活的sheet

1
2
sheet['A1'] = 56
sheet['A2'] = 43

点击并拖拽以移动

我们往A1和A2(cell)中写入数字

1
2
now = time.strftime("%x")
sheet['A3'] = now

点击并拖拽以移动

我们把当前日期写入A3

1
book.save("sample.xlsx")

点击并拖拽以移动

把写入的内容保存到sample.xlsx文件中,使用save()方法

New file点击并拖拽以移动

往cell(单元格)中写数据

有两种基本的方法可以写数据:

和Python中的字典类似的赋值方式

1
sheet['A1'] = 1

点击并拖拽以移动

调用cell()方法,指定行和列

1
sheet.cell(row=2, column=2).value = 2

点击并拖拽以移动

拓展数据

使用append()方法,我们可以在当前sheet后面增加一组数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/python3

from openpyxl import Workbook

book = Workbook()
sheet = book.active

rows = (
(88, 46, 57),
(89, 38, 12),
(23, 59, 78),
(56, 21, 98),
(24, 18, 43),
(34, 15, 67)
)

for row in rows:
sheet.append(row)

book.save('appending.xlsx')

点击并拖拽以移动

读取数据

在下面的例子中,我们会读取之前创建的sample.xlsx文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/python3

import openpyxl

book = openpyxl.load_workbook('sample.xlsx')
# 使用load_workbook()方法打开.xlsx文件

sheet = book.active

a1 = sheet['A1']
a2 = sheet['A2']
a3 = sheet.cell(row=3, column=1)

print(a1.value)
print(a2.value)
print(a3.value)

点击并拖拽以移动

读取多个单元格(cell)

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/python3

import openpyxl

book = openpyxl.load_workbook('items.xlsx')

sheet = book.active

cells = sheet['A1': 'B6']

for c1, c2 in cells:
print("{0:8} {1:8}".format(c1.value, c2.value))

点击并拖拽以移动

翻译部分截取自:http://zetcode.com/articles/openpyxl/[原文](http://zetcode.com/articles/openpyxl/http://)

note:

原文可以说的好教程的范例.一步一步的操作,加上每一步之后的详细解说,对小白友好.

我认为的好教程就看两点:

1.具有可操作性(能保证只要按照教程一步一步走就能得到想要的结果)

2.操作步骤后有解释说明,不仅让读者知道应该这么做,而且为什么要这么做.