多年来,教学多班级学生各个学期的成绩都是用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。各种导入方式,查阅了很多博客,按照博客的步骤操作,结果发现不能使用,实际开发中还是多看程序运行抛出的异常,按照异常解决问题更快速。