1. 程式人生 > >[Python3]讀寫Excel - openpyxl庫

[Python3]讀寫Excel - openpyxl庫

註釋 出版 logs com lin author arc ltm 一行

什麽是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庫