Python3之excel操作--openpyxl模塊

目錄

1:openpyxl模塊介紹    

2: openpyxl模塊安裝 

3:openpyxl模塊常用操作

3.1:獲取工作表

3.2:行操作

3.3:列操作

3.4:單元格操作

3.5:寫excel文件,合併單元格,樣式處理,設置公式等


1:openpyxl模塊介紹    

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


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

2: openpyxl模塊安裝 

pip install openpyxl

具體安裝步驟參看這個:第三方模塊庫安裝

3:openpyxl模塊常用操作

3.1:獲取工作表

# encoding=gbk

import  openpyxl

# 打開Book工作簿
workBook  = openpyxl.load_workbook('../test.xlsx')

# 查看工作簿對象中所有的屬性與方法
# print(help(workBook))

# 獲取所有的工作表名
print(workBook.sheetnames)              # ['Sheet1', 'Sheet2', 'Sheet3']
print(workBook.get_sheet_names())       # ['Sheet1', 'Sheet2', 'Sheet3']

# 獲取所有的工作表
print(workBook.worksheets) # 返回一個列表


# 獲取某個工作表
# 1:獲取當前激活的工作表
workSheet = workBook.active

# 2:通過下標獲取工作表
workSheet = workBook.worksheets[0]

# 獲取工作表的索引
# print(workBook.index(workSheet))
# print(workBook.get_index(workSheet))


# 3:通過工作表名獲取
workSheet = workBook.get_sheet_by_name('Sheet1')

3.2:行操作

# encoding=gbk

import  openpyxl

# 打開Book工作簿
workBook  = openpyxl.load_workbook('../test.xlsx')

# 查看工作簿對象中所有的屬性與方法
# print(help(workBook))


# 獲取某個工作表
# 1:獲取當前激活的工作表
# workSheet = workBook.active
# 2:通過下標獲取工作表
# workSheet = workBook.worksheets[0]
# 3:通過工作表名獲取
workSheet = workBook.get_sheet_by_name('Sheet1')

# 查看工作表中的方法與屬性
print(help(workSheet))


print(workSheet.min_row)  # 有數據的最小行索引
print(workSheet.max_row)  # 有數據的最大行索引

# 獲取所有的行:從1行1列開始,到有數據的最大行(workSheet.max_row),最大列(workSheet.max_column);
print(workSheet.rows)  # generator object
for row in workSheet.rows:
    print(row[0],row[0].value)  # row[0]: 某行對應的第一列的單元格,row[0].value 單元格中的值

#  可以通過指定開始行列,結束行列的範圍來獲取所需要的行
for row in workSheet.iter_rows(min_row=3, min_col=1,max_col = workSheet.max_column, max_row = workSheet.max_row):
    print(row[0], row[0].value)  # row[0] 行對應的第一列的單元格,row[0].value 單元格中的值

3.3:列操作

# encoding=gbk

import  openpyxl

# 打開Book工作簿
workBook  = openpyxl.load_workbook('../test.xlsx')

# 查看工作簿對象中所有的屬性與方法
# print(help(workBook))


# 獲取某個工作表
# 1:獲取當前激活的工作表
# workSheet = workBook.active
# 2:通過下標獲取工作表
# workSheet = workBook.worksheets[0]
# 3:通過工作表名獲取
workSheet = workBook.get_sheet_by_name('Sheet1')

# 查看工作表中的方法與屬性
print(help(workSheet))


print(workSheet.min_column)  # 有數據的最小列索引
print(workSheet.max_column)  # 有數據的最大列索引

# 獲取所有的行:從1行1列開始,到有數據的最大行(workSheet.max_row),最大列(workSheet.max_column);
print(workSheet.columns)  # generator object
for col in workSheet.columns:
    print(col[0],col[0].value)  # col[0]: 某列對應的第一行的單元格,col[0].value 單元格中的值

print('*'*60)
#  可以通過指定開始行列,結束行列的範圍來獲取所需要的列
for col in workSheet.iter_cols(min_row=3, min_col=2,max_col = workSheet.max_column, max_row = workSheet.max_row):
    print(col[0], col[0].value)  # col[0] 列對應的第一行的單元格,col[0].value 單元格中的值

3.4:單元格操作

# encoding=gbk

import  openpyxl

# 打開Book工作簿
workBook  = openpyxl.load_workbook('../test.xlsx')

# 查看工作簿對象中所有的屬性與方法
# print(help(workBook))


# 獲取某個工作表
# 1:獲取當前激活的工作表
# workSheet = workBook.active
# 2:通過下標獲取工作表
# workSheet = workBook.worksheets[0]
# 3:通過工作表名獲取
workSheet = workBook.get_sheet_by_name('Sheet1')

# 查看工作表中的方法與屬性
# print(help(workSheet))

# 1:可以通過上面的行操作,列操作,獲取單元格的內容,及重新設置單元格的內容
# 2:通過如下方式獲取,重新設置單元格的內容
print(workSheet['A1'].value)
workSheet['A1'].value = '1234';
# 3: 通過 cell(self, row, column, value=None) 獲取,設置
print(workSheet.cell(1,1).value)     # 不提供value,返回單元格
print(workSheet.cell(1,1,200).value) # 提供value,首先重置單元格內容,再返回單元格

workBook.save('test_1.xlsx');

3.5:寫excel文件,合併單元格,樣式處理,設置公式等

# encoding=gbk
import  openpyxl

# 一:打開Book工作簿,或創建工作簿
workBook  = openpyxl.load_workbook('../test.xlsx')  #  在已有的excel文件基礎上進行操作
# workBook  = openpyxl.Workbook()   # 創建新的文件來操作

# 查看工作簿對象中所有的屬性與方法
# print(help(workBook))

# 二:獲取某個工作表,或新創建工作表
# 1:獲取當前激活的工作表
# workSheet = workBook.active
# 2:通過下標獲取工作表
# workSheet = workBook.worksheets[0]
# 3:通過工作表名獲取
# workSheet = workBook.get_sheet_by_name('Sheet1')  # 在已有的工作表上進行操作
workSheet = workBook.create_sheet('Sheet_test',0)  # 創建新的工作表,第二個參數爲插入的位置

# 查看工作表中的方法與屬性
# print(help(workSheet))

# 三:給單元格賦值,設置公式
# 1:可以通過上面的行操作,列操作,獲取單元格的內容,及重新設置單元格的內容
# 2:通過如下方式獲取,重新設置單元格的內容
print(workSheet['A1'].value)
workSheet['A1'].value = '1234';
# 3: 通過 cell(self, row, column, value=None) 獲取,設置
print(workSheet.cell(1,1).value)     # 不提供value,返回單元格
print(workSheet.cell(1,1,300).value) # 提供value,首先重置單元格內容,再返回單元格
print(workSheet.cell(2,1,200).value)

# 給單元格設置公式:爲單元格設置公式的方式與設置普通值是一樣的。
workSheet['A3'] = '=SUM(A1:A2)'


# 四:合併單元格
# merge_cells(self, range_string=None, start_row=None, start_column=None, end_row=None, end_column=None)
print(workSheet.merge_cells(start_row=2,start_column=2,end_row=5,end_column=4))
workSheet.cell(2, 2).value  = 'hello'   # 給合併之後的單元格賦值

workSheet.merge_cells('A8:C10')
workSheet['A8'].value = 'A8-88';

# 取消合併
# unmerge_cells(self, range_string=None, start_row=None, start_column=None, end_row=None, end_column=None)


# 五:樣式
# 導入庫
from openpyxl.styles import Font, colors, Alignment
# 樣式--->字體
bold_itatic_24_font = Font(name='等線', size=24, italic=True, color=colors.RED, bold=True)
workSheet['A8'].font = bold_itatic_24_font

# 樣式--->對齊方式:也是直接使用cell的屬性aligment,這裏指定垂直居中和水平居中。除了center,還可以使用right、left等參數
# 設置B1中的數據垂直居中和水平居中
workSheet['A8'].alignment = Alignment(horizontal='center', vertical='center')

# 樣式--->設置行高和列寬
# 第2行行高
workSheet.row_dimensions[2].height = 40
# C列列寬
workSheet.column_dimensions['C'].width = 30

# 樣式--->改變 sheet 標籤按鈕顏色
workSheet.sheet_properties.tabColor = "0000ff"

workBook.save('test_1.xlsx');

 

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