多年來,教學多班級學生各個學期的成績都是用Excel格式儲存的,管理比較混亂。有時,路上碰到學生家長,想不起該生具體成績,顯得不關心該學生,很是尴尬。有時想了解一個學生多年來各科成績是否有進步,查閱曆史資料也不友善,決定把這些excel的資料錄入到資料庫。Excel資料格式大抵如下:
把資料從Excel表讀取到Python程式中,再從Python程式寫入資料庫。從Excel表到Python有幾種實作方式。
方式一:
安裝xlrd庫,如果Excel表格是xlsx檔案的,則需要安裝xlrd庫低版本,高版本不支援xlsx檔案。
pip install xlrd==1.2.0
代碼實作如下:
import xlrd
# 打開檔案
workbook = xlrd.open_workbook("course.xlsx")
# 擷取第一個sheet
sheet = workbook.sheet_by_index(0)
# 周遊每一行并輸出該行所有單元格資料
for row_index in range(sheet.nrows):
row = sheet.row_values(row_index)
# 過濾掉第一行标題
if type(row[0]) == float:
print(int(row[0]), row[1], row[2], int(row[3]))
方式二:
安裝openpyxl
pip install openpyxl
代碼實作如下:
from openpyxl import load_workbook
# 打開檔案
workbook = load_workbook("course.xlsx")
# 擷取第一個sheet
sheet = workbook.active
for row in sheet.iter_rows():
row_data = [cell.value for cell in row]
if type(row_data[0]) == int:
print(row_data[0], row_data[1], row_data[2], row_data[3])
方式三:
安裝pandas,安裝openpyxl(這個也得安裝,否則會報錯,說缺少這個子產品)
pip install pandas
pip install openpyxl
代碼實作如下:
import pandas as pd
df = pd.read_excel("course.xlsx")
for i in range(0, len(df)):
print(df.iloc[i]["學号"], end=" ")
print(df.iloc[i]["姓名"], end=" ")
print(df.iloc[i]["科目"], end=" ")
print(df.iloc[i]["成績"])
方式四:
安裝xlwings
pip install xlwings
代碼實作如下:
import xlwings as xw
workbook = xw.Book("course.xlsx")
sheet = workbook.sheets[0]
for item in sheet.range("A1:D21").value:
if type(item[0]) == float:
print(int(item[0]), item[1], item[2], int(item[3])
方式五:
安裝pyexcel、pyexcel-xlsx、pyexcel-xls
pip install pyexcel
pip install pyexcel-xlsx
pip install pyexcel-xls
代碼實作如下:
import pyexcel
sheet = pyexcel.get_sheet(file_name="course.xlsx")
for row in sheet:
if type(row[0]) == int:
print(row[0], row[1], row[2], row[3])
心得:
以上測試Excel表格導入到Python中,其Python版本是3.11.4。各種導入方式,查閱了很多部落格,按照部落格的步驟操作,結果發現不能使用,實際開發中還是多看程式運作抛出的異常,按照異常解決問題更快速。