python常用模塊(openpyxl模塊-用於處理excel表格)

一個簡答的使用助我們使用python簡單操作excel標籤!!!

1.openpyxl模塊簡介:

官方操作文檔:https://openpyxl.readthedocs.io/en/default/index.html
(openpyxl模塊安裝:pip install openpyxl即可)

openpyxl是一個開源項目,openpyxl模塊是一個讀寫Excel 2010文檔的Python庫,如果要處理更早格式的Excel文檔,需要用到其它庫(如:xlrd、xlwt等),這是openpyxl比較其他模塊的不足之處。openpyxl是一款比較綜合的工具,不僅能夠同時讀取和修改Excel文檔,而且可以對Excel文件內單元格進行詳細設置,包括單元格樣式等內容,甚至還支持圖表插入、打印設置等內容,使用openpyxl可以讀寫xltm, xltx, xlsm, xlsx等類型的文件,且可以處理數據量較大的Excel文件,跨平臺處理大量數據是其它模塊沒法相比的。因此,openpyxl成爲處理Excel複雜問題的首選庫函數。

在使用openpyxl前先要掌握三個對象,即:
Workbook(工作簿,一個包含多個Sheet的Excel文件)、
Worksheet(工作表,一個Workbook有多個Worksheet,表名識別,如“Sheet1”,“Sheet2”等)、
Cell(單元格,存儲具體的數據對象)三個對象。

小知識點:excel的基本定義:

  • 工作薄(workbook)
  • 工作表(worksheet)
  • 活動表(active sheet)
  • 行(row): 1,2,3,4,5,6……… 一張工作表最多有65536行
  • 列(column): A,B,C,D………張工作表最多有256列
  • 單元格(cell): B1, C1

一個簡單使用助我們完成基操:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import openpyxl

import openpyxl
'''
一個Workbook對象代表一個Excel文檔,因此在操作Excel之前,都應該先創建一個Workbook對象。
對於創建一個新的Excel文檔,直接進行Workbook類的調用即可,
對於一個已經存在的Excel文檔,可以使用openpyxl模塊load_workbook函數進行讀取,該函數包涵多個參數,但只有filename參數爲必傳參數。filename 是一個文件名,也可以是一個打開的文件對象。
'''
# 1.調用openpyxl.load_workbook()函數或openpyxl.Workbook(新工作簿的名字),取得Workbook對象。
wb = openpyxl.load_workbook(r'test.xlsx')     #wb的類型:<class 'openpyxl.workbook.workbook.Workbook'>
print(wb, type(wb))
# 獲取當前工作薄裏所有的工作表
print(wb.sheetnames)
#獲取當前工作簿里正在使用的工作表
print(wb.active)
#獲取excel的字符集編碼
print(wb.encoding)
# 獲取文檔的元數據,如標題,創建者,創建日期等
print(wb.properties)


# 2.創建一個Sheet對象,默認加到最後      同一個工作簿裏的工作表下標從0開始
mySheet = wb.create_sheet(index=3, title="Mysheet")
# 重新設置創建的這個Sheet工作表的標題
mySheet.title = "test"
# 設置Sheet標籤的顏色
mySheet.sheet_properties.tabColor = "205EB2"
#再添加一個Sheet工作表,下面測試刪除
test_sheet=wb.create_sheet(index=4,title="test_sheet")

# 3. 選擇要操作的工作表, 返回工作表對象
sheet = wb['Sheet1']
# 獲取工作表的名稱
print(sheet.title)

# 4. 返回指定行指定列的單元格信息以及賦值操作     row:單元格所在行;column:單元格所在的列;value:單元格的值;coordinate:單元格的座標
# 第一種方法:
print(sheet.cell(row=5, column=2).value)
# 第二種方法:
cell = sheet['B6']          #如果不存在,就會自動創建一個
print(cell)
print(cell.row, cell.column, cell.value,cell.coordinate)
#賦值操作:
sheet['B7']="帥哥"        #直接賦值
# 拓展:訪問多個cell
#(1)通過切片Ranges指定許多cells
cell_range = sheet['A1':'C2']
#(2).iter_rows() 方法:(需要指定行->行,截止行);    .iter_cols() 方法:(需要指定列->列,截止列)
for row in sheet.iter_rows(min_row=1, max_col=3, max_row=2):
    for cell in row:
       print(cell.value)


# 5 獲取工作表中的一些信息
print(sheet.max_column)         #min_column對應表格的最小列
print(sheet.max_row)            #min_row對應表格的最小行
print(sheet.rows)               #按行獲取單元格(Cell對象) - 生成器
print(sheet.columns)               #按列獲取單元格(Cell對象) - 生成器
print(sheet.values)             #按行獲取表格的內容(數據) - 生成器
# 小拓展:
from openpyxl.utils import get_column_letter, column_index_from_string
print(get_column_letter(2))             #根據列的數字返回字母
print(column_index_from_string('D'))    #根據字母返回列的數字

# 刪除工作表:
# 方式一
wb.remove(test_sheet)
# 方式二
# del wb[sheet]

'''矩陣置換,行置列:
rows = [
    ['Number', 'data1', 'data2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 50, 30],
    [5, 30, 10],
    [6, 25, 5],
    [7, 50, 10]]

list(zip(*rows))

# 輸出:
[('Number', 2, 3, 4, 5, 6, 7),
 ('data1', 40, 40, 50, 30, 25, 50),
 ('data2', 30, 25, 30, 10, 5, 10)]
'''

# 6. 訪問單元格的所有信息
print(sheet.rows)               # 返回一個生成器, 包含文件的每一行內容, 可以通過遍歷訪問.
# 循環遍歷每一行
# for row in sheet.rows:
#     # 循環遍歷每一個單元格
#     for cell in row:
#         # 獲取單元格的內容
#         print(cell.value, end=',')
#     print()

# 7. 保存修改信息
wb.save(filename='Boom.xlsx')


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章