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给你分配的工作表的名称

Logo

一站式 AI 云服务平台

更多推荐