前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python | 使用Python操作Excel文档(一)

Python | 使用Python操作Excel文档(一)

作者头像
LogicPanda
发布2019-07-30 14:57:25
2.3K0
发布2019-07-30 14:57:25
举报

Python | 使用Python操作Excel文档(一)

0 前言

在阅读本文之前,请确保您已满足或可能满足以下条件:

  1. 请确保您具备基本的Python编程能力。
  2. 请确保您会使用Excel。
  3. 请确保您的电脑已经安装好Python且pip可用。

另外操作Excel需要使用openpyxl模块,请安装好该模块:

代码语言:javascript
复制
pip install openpyxl

演示环境:

  1. 演示环境为win10+Python3.6
  2. openpyxl版本为2.6.2
  3. 调试工具为IDLE

1. openpyxl简述

openpyxl操作Excel的第三方库,作者是Eric Gazoni, Charlie Clark。您也可以访问openpyxl的官方网站通过官方手册进行学习。同时附上官方网站的地址:

https://openpyxl.readthedocs.io/en/stable/index.html。

目前openpyxl的最新版本是2.6.2版本。在openpyxl之前,我们使用xlrd和xlwt来操作Excel表格,事实上这两个库也非常好用,一读一写,然而遗憾的是它们只能操作2003及以前的版本,而openpyxl却能支持2010版本。

另外这里附上源码地址,感兴趣的同学可以自行下载学习或者参与开发:

http://bitbucket.org/openpyxl/openpyxl/src

2. 创建/读取一个Excel工作簿

我们知道一个xlsx文件叫做工作簿,工作簿中的每一张表叫做工作表,表中每个格叫做单元格。

创建工作簿,示例代码如下:

代码语言:javascript
复制
from openpyxl import Workbook
wb = Workbook().save("example.xlsx")

Workbook对象是一个用来创建一个工作簿,save方法用来将这个对象保存成一个文件。

可以查看一下,程序执行的目录下是不是出现了一个example.xlsx文件。这时,是一个全新的文件,里面只有一张默认的表。

读取已存在的xlsx文件,使用openpyxl中的load_wordbook()方法。示例代码如下:

代码语言:javascript
复制
from openpyxl import load_workbook
wb = load_workbook("example.xlsx")

4. 操作Excel表:读取,创建,删除,复制

每个工作表都是一个Worksheet对象。

首先访问wb的sheetnames属性来获取文件中的所有工作表的名字,:

代码语言:javascript
复制
wb.sheetnames # ['Sheet']

一般来说,当我们打开一个Excel表格,会看到上次我们保存的表。这个表是活动状态的。我们可以使用Workbook类中的active属性来读取这张表。

代码语言:javascript
复制
ws = wb.active 

ws就是我们要操作的表了。你可以使用ws的title属性来获取表明,一般当我们创建一个xlxs文件的时候,会默认创建一张表Sheet,接下来我们对ws的操作,就是对这张表的操作,可以理解成对ws的操作会反映到这张表上。

例如访问ws的title属性,可以获取或修改表名。ws是一个Worksheet对象,也可以使用Workbook类中的get_sheet_by_name("sheet_name")方法读取这张表。也可以使用wb[表名]的方式,但是旧版本的openpyxl可能会不知这种访问方式。使用title给这张表重命名:

代码语言:javascript
复制
ws.title # 'Sheet'
ws = wb.get_sheet_by_name("Sheet")
ws.title # 'Sheet'
ws.title = "demo"
wb.sheetnames # ['demo']
ws = wb["demo"]

创建一张表,使用Workbook中的create_sheet()方法:

代码语言:javascript
复制
 ws1 = wb.create_sheet("demo1")
 wb.sheetnames # ['demo', 'demo1']

删除一张表,使用Workbook中的remove_sheet()方法:

代码语言:javascript
复制
wb.remove_sheet(ws1) 
wb.sheetnames # ['demo']

需要注意的是,也可以使用wb.remove(ws1)del w["demo1"],但是不建议这种写法。

复制一张表,使用Workbook中的copy_worksheet()方法:

代码语言:javascript
复制
ws2 = wb.copy_worksheet(ws)
wb.sheetnames # ['demo', 'demo Copy']

PS:旧版的openpyxl可能不支持sheetnames属性,这时可以使用Workbook类中的get_sheet_names()方法,旧版中也可能不支持wb[表名]的访问方式以及active属性,这时可以使用get_active_sheet()方法

5. 操作单元格

每个单元格都是一个Cell对象。

访问单元格,需要使用坐标,坐标的表示方式有两种,一种是使用字符串,如‘A1’,表示的是第一列,第一行。。另一种就是使用标准得坐标如,column=1, row=1,利用ws中的cell方法来第一行第一列的单元格。访问单元格的方式是使用如ws['A1'], 即表变量[坐标]

代码语言:javascript
复制
ws['A1'] = 0
ws.cell(row=1, column=1, value=0)
print(ws['A1'].value) # 0

需要强调的是,虽然可以直接给单元格赋值,但是要读取这个值,还是需要访问Cell类中的value属性的。而且坐标必须从1开始。

PS:部分旧版可能不支持表变量[坐标]的访问方式,这时,可以使用ws.Cell('A1')或ws.Cell(column=1, row=1)的方式来访问。

6. 向表中写入大量数据

代码语言:javascript
复制
for i in range(1, 20):
    for j in range(1, 20):
        ws.cell(i,j,value=i*j)

需要注意的是,使用cell时,坐标至少是1,也就是说,大于0的整数。

代码语言:javascript
复制
wb.save("example.xlsx")

好,到这里,我们保存,来看下效果。

7.复习下今天内容

关于使用openpyxl操作Excel文档,应该要先了解openpyxl提供的三个类:

  • Workbook类用来创建工作簿、读取、创建,删除,复制工作表等。
  • load_workbook方法会读取已存在的工作簿,返回Workbook对象
  • Worksheet类用来进行表的操作,比如访问单元格。返回Cell对象。

今天的内容就到这里了,明天会继续介绍如何使用openpyxl来操作Excel文档。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程杂艺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python | 使用Python操作Excel文档(一)
  • 0 前言
    • 1. openpyxl简述
      • 2. 创建/读取一个Excel工作簿
        • 4. 操作Excel表:读取,创建,删除,复制
          • 5. 操作单元格
            • 6. 向表中写入大量数据
              • 7.复习下今天内容
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档