什么是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查看爬取结果如下:
时间: 2024-10-03 22:40:04