python通過openpyxl操作excel


python 對Excel操作常用的主要有xlwt、xlrd、openpyxl ,前者xlwt主要適合於對后綴為xls比較進行寫入,而openpyxl主要是針對於Excel 2007 以上版本進行操作,也就是對后綴為xlsx進行操作。

Excel 主要有三大元素,工作簿,Sheet 頁,單元格,一個工作簿可以包含多個Sheet頁面,而Sheet頁由N多個單元格組成,而單元格主要用來存儲數據;

一、安裝插件

pip install openpyxl

二、創建Excel文件

   操作excel之前,首先我們需要創建一個excel ,創建的途徑很多,我們主要通過openpyxl的方式創建;

# 首先需要我們導入Workbook包
from
openpyxl import Workbook excel = Workbook() # 創建excel對象 excel.save("sample.xlsx") # 保存excel

創建方式很簡單,其實就是把沒有的東西保存在指定的位置即可;

二、創建Sheet頁

  1.excel默認創建成功以后會自動創建一個Sheet頁面

from openpyxl import Workbook

excel = Workbook()  # 創建excel對象

excel.create_sheet(title="Sheet1", index=1)  # 創建sheet頁面,默認index 的值為1,但是index是從0開始
excel.save("sample.xlsx")  # 保存excel

  注意:

      新建sheet 完成以后需要保存,如果不保存是無法創建成功

三、新建excel時寫入測試數據

from openpyxl import Workbook

# 寫入操作之前首先我們需要知道在那個Sheet頁寫入
# 打開默認的Sheet頁面

excel = Workbook()
sheet = excel.active  # 激活第一個Sheet頁
# excel寫入數據的三種方式
# 指定單元格寫入數據
ws["A1"] = "添加數據方式1"  # 指定單元格進行添加數據
# 在當前的sheet頁面中追加一行數據
ws.append([1, 2, 3, 4])  # 在當前sheet頁面追加
# 指定行號,列號,寫入的值
ws.cell(row=1, column=2, value="第一行第二列添加測試數據")
# 最重要的寫入數據以后需要保存數據
wk.save("sample.xlsx")

四、操作excel 

  1.獲取所有的Sheet頁面,修改Sheet名稱,刪除Sheet頁面

excel = load_workbook('sample.xlsx')  # 打開文件
# 獲取當前excel的所有sheet 頁
print(excel.sheetnames)  
# 獲取指定的Sheet頁面
sheet = excel['Sheet']  # 通過sheet_name獲取,通過sheet名稱獲取表
# 獲取當前sheet頁的名稱
print(sheet.title)
# 修改 Sheet 名稱
sheet.title = "Sheet_new"  
# 刪除Sheet頁
excel.remove_sheet(sheet)  # 這個方法已經棄用,推薦使用remove 或者del excel["Sheet1"]  # 指定刪除的Sheet名稱
excel.remove(sheet) # 先獲取Sheet,然后在刪除
excel.save("sample.xlsx") # 只要修改完成,必須保存excel

  2.讀取excel數據

# 首先讀取excel數據的時候我們需要導入load_workbook
from openpyxl import load_workbook
# 打開文件
excel = load_workbook('bid.xlsx') 
# 獲取操作的sheet頁面
sheet1 = excel['Sheet1']  # 通過sheet_name獲取,通過sheet名稱獲取表
sheet2 = excel.active() # 打開默認的sheet頁面

# 讀取單元格的數據
data = table.cell(row=1, column=1).value  # 指定行列獲取單元格的數據,還可以通過循環的方式獲取多個單元格的值

data = table["A1"].value  # 指定單元格獲取數據

dataw = table["A1":"C2"]  # 獲取多個單元格數據

# 修改單元格數據
data = table["A1"].value = "修改數據方式"  # 重新指定單元格的數據

 3.獲取表的一些屬性

wb = load_workbook("sample.xlsx")
ws = wb.active
# 通過返回最大的行數和列數,獲取excel有多少行多少列
rows = ws.max_row  # 獲取行數
cols = ws.max_column  # 獲取列數
# 直接獲取行數和列數,返回的結果是一個生成器,需要通過元組轉換下

len(tuple(ws.columns))  # 獲取列數
len(tuple(ws.rows))  # 獲取行數

四、實際案例

  工作中,需要測試數據需要支持多個數據源,但是我不想改后端的代碼,所以考慮將excel數據處理為json數據,然后進行處理工作。

def excel2json(file_name):
    wb = load_workbook(file_name)
    ws = wb.active
    result_list = []
    head_list = []
    for k in tuple(ws.rows)[0]:  # excel的第一行數據設置為字典的key
        head_list.append(k.value)

    for rv in tuple(ws.rows)[1:]:  # excel 其他的行為字典的value
        value_list = []
        for v in rv:
            value_list.append(v.value)
        result_list.append(dict(zip(head_list, value_list)))  # 兩個列表合並為字典
    return result_list

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM