专栏首页开源优测[快学Python3]读写Excel - openpyxl库

[快学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")

本文分享自微信公众号 - 开源优测(DeepTest),作者:苦叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python selenium - 利用excel实现参数化

    前言 在进行软件测试或设计自动化测试框架时,一个比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xl...

    苦叶子
  • python selenium - 利用excel实现参数化

    前言 在进行软件测试或设计自动化测试框架时,一个比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xl...

    苦叶子
  • python selenium2示例 - 利用excel实现参数化

    前言 在进行软件测试或设计自动化测试框架时,一个比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xl...

    苦叶子
  • 持续搞【附近】---长连接坐标流和“地理围栏”(五)

    我们经过【附近】系列的二、三、四篇章后,已经基本了解了市面上用于解决LBS问题的几种常见方案和做法,当然除了PostGre外... ...那个有兴趣的哥们可以考...

    老李秀
  • 【leetcode第 169 场周赛】5295. 和为零的N个唯一整数

    给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。

    韩旭051
  • Android中极简的js与java的交互库-SimpleJavaJsBridge

    最近接触android中js与java交互的东西很多,当然它们之间的交互方式有几种,但是我觉得这几种交互方式都存在一定的不足,这是我决定编写SimpleJava...

    用户2802329
  • 推荐一个有用的Excel操作类库 LinqToExcel

    以前项目中对Excel进行信息读取,我都是使用的NPOI的封装类,给定一个fileurl,然后返回给我一个datatable。接下去自己去解析数据。如果使用这种...

    小狐狸
  • 【Java面试复习经典】传智播客Java就业班入学测试题及答案解析(2014年版)

    黑泽君
  • Tomcat创建HTTPS访问,java访问https

    一 https和ssL HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全...

    Ryan-Miao
  • 关联分析(2):Apriori产生频繁项集

    在关联分析(1):概念及应用中,我们介绍了关联分析的应用场景、基本概念和规则产生思路。在本次的文章中,我们将介绍Apriori算法频繁项集产生的原理。文章中会涉...

    三猫

扫码关注云+社区

领取腾讯云代金券