栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

学习通导出成绩,未完善

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习通导出成绩,未完善

 第一步,先找到你浏览器的下载路径,把路径改成一个好找点的文件夹(当然了,你也可以不改)

例如,我的位置是这个:

 

 然后导入pands模块和numpy,openpyxl

在终端输入pip install 模块名字

import pandas as pd

import os
import csv
from openpyxl import Workbook
import numpy as np
address="D:/桌面文件/py666/"
sno=[]
wb = Workbook()

ws = wb.create_sheet("respect")
label=[]
label.append("学号")
for filename in os.listdir(address):
    label.append(filename)
firstone=label[1]
#读取文件的名字
feature=[]
df_sno = pd.read_excel("%s%s"%(address,firstone), usecols=[1], names=None,skiprows=0)  # 读取项目名称列,不要列名
df_li_sno = df_sno.values.tolist()

for s_li_sno in df_li_sno:
    sno.append(s_li_sno[0])
sno.pop(1)
feature.append(sno)



for i in range(1,len(label)):
    #def excel_one_line_to_list():
        df = pd.read_excel("%s%s"%(address,label[i]), usecols=[9],names=None,skiprows=0)  # 读取项目名称列,不要列名

        df_li = df.values.tolist()
        # print(df_li)



        result = []
        for s_li in df_li:
            result.append(s_li[0])
        result.pop(1)
       # print(result)
        feature.append(result)



print('feature:',feature)
for i in range(len(feature)):
    feature[i].pop(0)
#写数据
label = np.array(label)
feature = np.array(feature)

label_input = []
for l in range(len(label)):
    label_input.append(label[l])



ws.append(label_input)
for f in range(len(feature[0])):

    ws.append(feature[:, f].tolist())

print('sno:',sno)
wb.save("web成绩查询.xlsx")
print("Ok,respect!!!")

注意从学习通里面导出的成绩不要做任何修改,直接放入文件夹即可

运行程序,不出意外的话,你的结果是这个样子的

,但是细心的你这个时候会发现这个里面学号的顺序和成绩表里面的顺序是不一样的(本来就是不一样) ,这个时候,你可以再新建一个excel文件,内容如下,ps:就是把你成绩表里面的学号复制过来,我这个表的名字叫:ap学号.xlsx

import pandas as pd

# 地区信息表
df_location = pd.read_excel("D:/桌面文件/ap学号.xlsx" )
df_location.head()

# 数据库导出表
df_number = pd.read_excel("web成绩查询.xlsx",sheet_name="respect")
df_number.head()

df_merge = pd.merge(left=df_location, right=df_number, left_on="学号", right_on="学号")
df_merge.head()
df_merge.to_excel("合并后的数据表.xlsx", index=False)

如果报这个错,那是可能你的excel表格打开了没有关,运行代码时就会报错 

PermissionError: [Errno 13] Permission denied: 'web成绩查询.xlsx'
 

最终代码,用这个就行

import pandas as pd
import os
from openpyxl import Workbook
import numpy as np
import pandas as pd
import xlwt
import openpyxl
kechengbiao="D:/桌面文件/WEB应用系统设计1班.xlsx"#课程表的路径
address="D:/桌面文件/py666/"#导出来文件的路径

def tran_sno_excel():#转移学号到Sheet2
    data = pd.read_excel(kechengbiao, sheet_name=0, header=None,skiprows=6,usecols=[1],dtype=str,nrows=43)#43是我们班的人数
    train_data = np.array(data)  # np.ndarray()
    excel_list = train_data.tolist()  # list
    print(excel_list)
    print(excel_list[0][0])
    print(excel_list[1][0])
    print(len(excel_list))
    print(len(excel_list[0]))
    # 将excel转为列表
    work_book = openpyxl.load_workbook(kechengbiao)#读取追加的excel
    sheet = work_book['Sheet2']#确定追加的sheet
    sheet.cell(row=1, column=1, value="学号")
    for row in range(len(excel_list[0])):
        for col in range(len(excel_list)):
            sheet.cell(row=2+col,column=1,value=excel_list[col][0])#输入数据
    work_book.save(kechengbiao)#追加数据
    print("学号转移成功")

def first_producscore():#所有次成绩显示在python文件夹里面
    sno=[]
    wb = Workbook()
    ws = wb.create_sheet("respect")
    label=[]
    label.append("学号")
    for filename in os.listdir(address):
        label.append(filename)
    firstone=label[1]
    #读取文件的名字
    feature=[]
    df_sno = pd.read_excel("%s%s"%(address,firstone), usecols=[1], names=None,skiprows=0)  # 读取项目名称列,不要列名
    df_li_sno = df_sno.values.tolist()

    for s_li_sno in df_li_sno:
        sno.append(s_li_sno[0])
    sno.pop(1)
    feature.append(sno)
    for i in range(1,len(label)):
        #def excel_one_line_to_list():
            df = pd.read_excel("%s%s"%(address,label[i]), usecols=[9],names=None,skiprows=0)  # 读取项目名称列,不要列名
            df_li = df.values.tolist()
            # print(df_li)
            result = []
            for s_li in df_li:
                result.append(s_li[0])
            result.pop(1)
           # print(result)
            feature.append(result)
    # print('feature:',feature)
    for i in range(len(feature)):
        feature[i].pop(0)
    #写数据
    label = np.array(label)
    feature = np.array(feature)
    label_input = []
    for l in range(len(label)):
        label_input.append(label[l])
    ws.append(label_input)
    for f in range(len(feature[0])):
        ws.append(feature[:, f].tolist())
    # print('sno:',sno)
    wb.save("成绩查询.xlsx")
    print("Ok,respect,成绩生成成功,!!!")


def SnoMatch():
    df_location = pd.read_excel(kechengbiao, sheet_name="Sheet2")
    df_location.head()

    df_number = pd.read_excel("成绩查询.xlsx", sheet_name="respect")
    df_number.head()
    df_merge = pd.merge(left=df_location, right=df_number, left_on="学号", right_on="学号")
    df_merge.head()
    df_merge.to_excel("第二个生成的学号匹配合并后的数据表.xlsx", index=False)#生成第二个学号匹配合并后的数据表
    print("学号匹配合并成功")

def write_lines_excel():
    data = pd.read_excel(r'第二个生成的学号匹配合并后的数据表.xlsx', sheet_name=0, header=None)
    train_data = np.array(data)  # np.ndarray()
    excel_list = train_data.tolist()  # list
    del (excel_list[0])  # 去掉标题
    for i in range(len(excel_list)):  # 去掉学号
        del (excel_list[i][0])
    work_book = openpyxl.load_workbook(kechengbiao)#读取追加的excel
    sheet = work_book['Sheet1']#确定追加的sheet
    for row in range(len(excel_list)):
        for col in range(len(excel_list[i])):
            sheet.cell(row=row+7,column=col+22,value=excel_list[row][col])#输入数据,成绩插入的位置
    work_book.save(kechengbiao)#追加数据
    print("课程表sheet1追加成功")




def sheet3_procde():#追加所有成绩到课程设计表里面的sheet
    data = pd.read_excel(r'第二个生成的学号匹配合并后的数据表.xlsx', sheet_name=0, header=None)
    train_data = np.array(data)  # np.ndarray()
    excel_list = train_data.tolist()  # list
    # print(excel_list)
    work_book = openpyxl.load_workbook(kechengbiao)#读取追加的excel
    sheet = work_book['Sheet3']#确定追加的sheet
    for row in range(len(excel_list)):
        for col in range(len(excel_list[0])):
            sheet.cell(row=row+1,column=col+1,value=excel_list[row][col])#输入数据
    work_book.save(kechengbiao)#追加数据
    print("sheet3追加成功")

if __name__ == '__main__':
    tran_sno_excel()
    first_producscore()
    SnoMatch()
    write_lines_excel()
    sheet3_procde()

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879574.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号