fastapi 接受excel文件,将excel表格中的数据写入数据库
fastapi 接受excel文件,将excel表格中的数据写入数据库下面代码写的是 接受excel中用户对应对的得分情况,将得分与数据库中的得分进行相加# 导入load_workbook模块,用于操作excel表格from openpyxl import load_workbookimport os@route.post('/calculation/')async def AAA(file: U
·
fastapi 接受excel文件,将excel表格中的数据写入数据库
下面代码写的是 接受excel中用户对应对的得分情况,将得分与数据库中的得分进行相加
# 导入load_workbook模块,用于操作excel表格
from openpyxl import load_workbook
import os
@route.post('/calculation/')
async def AAA(file: UploadFile = File(...)):
res = await file.read()
with open(file.filename, "wb") as f:
f.write(res)
# 打开工作薄与工作表
wb = load_workbook(file.filename)
sheet = wb.get_sheet_by_name('Sheet1')
# 计算表格数据的有效行数rows
num = 1
while 1:
cell = sheet.cell(row=num, column=1).value
if cell:
num = num + 1
else:
# print(num)
break
rows = num - 1
# print(rows)
# for循环迭代读取xlsx文件中的每行数据, 从第二行开始因为需要跳过标题行
# 注意:openpyxl方式表格列标与行标都是从1开始计算的
for r in range(2, rows + 1):
# excel 没有标题行 直接是具体的数据 就直接从第一行开始
#for r in range(1, rows + 1):
username = sheet.cell(row=r, column=1).value
fraction = sheet.cell(row=r, column=2).value
user = session.query(User).filter_by(username=username).first()
if user and user.fraction is not None:
user_fraction = user.fraction
user.fraction = int(fraction) + int(user_fraction)
session.flush()
session.close()
os.remove(file.filename)
return 'ok'
sheet = wb.get_sheet_by_name('Sheet1')
这里为什么要写 Shell1 呢?如下图所示:
这个 Shell1 是excel给你分配的工作表的名称
更多推荐




所有评论(0)