Python讀取Excel表格

淘氣的包子發表於2021-10-20

前言:需要進行自動化辦公或者自動化測試的朋友,可以瞭解下此文,掌握Python讀取Excel表格的方法。

一、準備工作:

1、安裝Python3.7.0(官網下載安裝包)

2、安裝Pycharm(官網下載安裝包)

3、安裝openpyxl

命令列視窗執行: pip install openpyxl ,出現Successfully installed表示安裝成功。

4、準備一份Excel表格,絕對路徑:D:\zxt\test_data.xlsx , test_data.xlsx內容如下:

二、瞭解幾個常用概念

workbook 工作簿

worksheet 表單

row 行

column 列

cell 單元格

active 活躍的表單(即:正開啟使用的表格)

index 索引 (注意:Excel中的索引值是從1開始!!!

三、Python讀取Excel

import openpyxl
# 一、開啟工作簿
wb = openpyxl.load_workbook(r"D:\zxt\test_data.xlsx", read_only=False)

# 二、從工作簿中獲取表單
# 1.遍歷表單名稱
for sheet in wb:
print(sheet.title)

print(wb.sheetnames) # 結果是一個列表

# 2.獲取表單物件
mySheet = wb.create_sheet('表單4')
print(wb.sheetnames)
sheet4 = wb['表單4'] # 通過表單名獲取,注意這裡使用方括號

# 三、從表單中取出單元格,並列印單元格的行、列、值
ws = wb.active # 取出活躍的表單
print(ws) # 列印表單
print(ws['A1']) # 列印A1單元格
print(ws['A1'].value) # 列印A1單元格的值

# 1.列印B2單元格的行、列、值
c = ws['B2']
print("B2單元格的行數是{0},列數是{1},值是{2}".format(c.row, c.column, c.value))
print("單元格{0}的值是{1}".format(c.coordinate, c.value)) # c.coordinate表示獲取單元格的座標

# 2.還可以通過指定單元格的行、列索引值,來獲取單元格的值
print(ws.cell(row=2, column=2).value)

for i in range(2, 8, 2):
print(ws.cell(row=i, column=2).value)

for j in range(1, 3):
print(ws.cell(row=2, column=j).value)

# 3.根據指定的行、列範圍列印單元格的值
row6 = ws[6]
print(row6)
columnB = ws['B']
print(columnB)
row_range = ws[1:8] # 採用切片的方法獲取行的範圍
column_range = ws['A:C']
column_index = range(1, 4)

# 利用for迴圈遍歷單元格的值
# 方法1.先取出每一行,再取出每一行中的每一個單元格來獲取值
for row in row_range:
for cell in row:
print(cell.value)

# 方法2.先取出每一列,再取出每一列中的每一個單元格來獲取值
for col in column_range:
for cell in col:
print(cell.value)

# 方法3.通過生成器列印指定矩形區域單元格的值
# 說明:使用iter_rows()和iter_cols()方法更加靈活,可以指定單元格的行、列範圍,返回的是一個生成器。
for row in ws.iter_rows(min_row=1, max_row=8, min_col=1, max_col=2):
for cell in row:
print(cell.value)

for col in ws.iter_cols(min_col=1, max_col=2, min_row=1, max_row=8):
for cell in col:
print(cell.value)

# 方法4.按照單元格的範圍(矩形)區域列印單元格的值
# 先給出單元格的範圍,然後按行取列印每個單元格的值
cell_range = ws['A1:B8']
for rowOfCellObject in cell_range:
for cellObj in rowOfCellObject:
print(cellObj.coordinate, cellObj.value)

# 四、獲取表單的最大行數、最大列數
print("表單1是:{0}*{1}的表格".format(ws.max_row, ws.max_column))

# 五、列對應的數字和字元轉換
# 說明:使用這個轉換功能,我們需要先匯入2個模組
from openpyxl.utils import get_column_letter, column_index_from_string
print(get_column_letter(2), get_column_letter(20), get_column_letter(47))
print(column_index_from_string('AU'), column_index_from_string('AHH'))











 

 

 

 
 

 

 


 

相關文章