[Python3]读写Excel - openpyxl库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python3]读写Excel - openpyxl库相关的知识,希望对你有一定的参考价值。

什么是openpyxl

openpyxl是一个第三方的pythonexcel读写库,支持Excel2010 xlsx/xlsm/xltx/xltm文件格式。

openpyxl提供哪些能力?

  • excel的基本读写能力

  • 与pandas和numpy无缝链接能力

  • excel里图表管理

  • excel单元格注释管理

在本节我们主要分享什么?

主要分享openpyxl的excel读写功能。提供常用的代码实例。

对于图表、注释管理、pandas和numpy综合使用不在本节内容讲解范围内,有兴趣的朋友可以自己去研究。

如何安装openpyxl

使用以下命令安装openpyxl库

pip install openpyxl

导入openpyxl模块

要使用openpyxl对excel进行读写,需要导入其中的Workbook类,方法如下:

from oepnpyxl import Workbook

一个简单的示例

我们先一个简单的示例,如何是使用openpyxl写excel。

# -*- coding:utf-8 -*-

__author__ = 谷白

from openpyxl import Workbook

if __name__ == "__main__":    
    print("写excel简单示例")    

    # 创建一个excel工作区
    wb = Workbook()    

    # 激活当前工作簿
    ws = wb.active    
    
    # 往单元格A1写入数据, 其他单元格写入类似
    ws[A1] = "博客园谷白"

    # 写下一行数据,列表元素对应每一个单元格
    ws.append([1, 2, 3])    
    
    # 写入时间类型到excel, python会自动将类型转换成excel的日期时间类型
    import datetime
    ws[A2] = datetime.datetime.now()    

    # 保存为excel文件
    wb.save("简单excel写示例.xlsx")

读取已存在的excel文件

下面就上面示例生成的“简单excel写示例.xlsx”文件,进行读取,并将内容输出值console。

# -*- coding:utf-8 -*-

__author__ = 谷白


from openpyxl import load_workbook

if __name__ == "__main__":    

    print("读取已存在的excel文件")

    wb = load_workbook("简单excel写示例.xlsx")    
    
    # 获取所有sheet名, 返回的是list类型
    sheets = wb.get_sheet_names()    
    print(type(sheets))    

    # 遍历sheets,并读取其单元格内容打印输出
    for sh in sheets:        
        print("读取工作簿名称: ", sh)    

    # 获取要读取的sheet
    ws = wb.get_sheet_by_name(sheets[0])    
    
    # 读取Sheet A1 , A2, B2, C2单元格内容

    # 读取A1单元格的值
    A1 = ws[A1].value    
    print("A1单元格的值: ", A1)    

    # 读取A2, B2, C2
    for index in (A2, B2, C2):        
        print(index, "单元格的值: ", ws[index].value)    
    
    # 读取空值的单元格, openpyxl对于空值的单元格,返回None
    F1 = ws[F1].value    
    print("F1单元格的值: ", F1)

高级示例

下面就使用urllib从网络爬取数据,写入excel进行示例演示,从豆瓣网爬取部分书籍数据,写入excel。

# -*- coding:utf-8 -*-

__author__ = 谷白

import urllib.request
from openpyxl import Workbook

if __name__ == "__main__":    
    print("爬取豆瓣网书籍数据写入excel示例")    
    
    # 通过豆瓣网搜索API,搜索python关键词,采集书籍数据
    # 本示例只采集第一页的数据
    url = "https://api.douban.com/v2/book/search?q=python"
    response = urllib.request.urlopen(url)    
    
    # 将bytes数据流解码成string
    ebook_str = response.read().decode()    

    # 将string转换成dict
    ebook_dict = eval(ebook_str)    
    
    # 构建一个Workbook对象
    wb = Workbook()    # 激活第一个sheet
    ws = wb.active    # 写入表头
    ws.append(["书名", "作者", "描述", "出版社", "价格"])    
    
    # 写入书信息
    for book in ebook_dict["books"]:
        ws.append([book["title"], 
            ",".join(book["author"]), 
            book["summary"], 
            book["publisher"], 
            book["price"]])    
    
    # 保存
    wb.save("ebook.xlsx")

打开ebook.xlsx查看爬取结果如下: 

以上是关于[Python3]读写Excel - openpyxl库的主要内容,如果未能解决你的问题,请参考以下文章

python3 读写Excel

python3 对excel读写修改的操作

Python处理Excel文件(csv, xls, xlsx)

Python读写excel表格的方法

python3使用xlrdxlwtxlutilsopenpyxlxlsxwriter操作excel

python 3.6xlwt和xlrd对excel的读写操作