小学 学生学籍信息汇总处理代码

将每个学生填写的信息在检查后自动汇总到一个新的excel表格。

#-*- encoding: utf-8 -*-
‘‘‘
  小学  学生学籍信息汇总 (带身份证号码有效性检查)
  版权:GPL
  owner:[email protected]
‘‘‘

import os
#import xlrd
import xlwt

from xlrd import open_workbook  
from xlutils.copy import copy  
import re
import traceback
def check_id( idcard ):
    ‘‘‘
      检查身份证号的有效性
    ‘‘‘
    s = idcard[:-1] #"34052419800101001" #分组
    temp = zip(s[0:17], [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2])
    
    #相乘
    temp2 = map(lambda x:int(x[0])*x[1], temp)
    #print temp2
    
    #相加
    temp3 = sum(temp2)
    #或者这样写:
    #temp3 = reduce(lambda x, y : x + y, temp2)print temp3
    
    #最终结果
    tmp = ‘10X98765432‘
    res = tmp[temp3 % 11]
    if idcard[ -1] != res:
        raise Exception("身份证号码错误")

def read_one_file (targetFile,sheetName):  
    #打开excel文件,formatting_info=True可以指定保存格式  
    data = open_workbook(filename=targetFile,formatting_info=True)
    
    #table = data.sheets()[0]          #通过索引顺序获取
    #table = data.sheet_by_index(0) #通过索引顺序获取
    table = data.sheet_by_name( sheetName )#通过名称获取    
    ##读取有意义的内容
    row_value = table.row_values(1)
    ## TODO 应该检查
    
    ## 出生地、户籍所在地, 只保留代码。。
    def addr_code(  row_value, index):
        ## 如果为空则不检查 
        if row_value[index]:
            row_value[index] =  re.search("\d+",row_value[index]).group()   
            
    try:
        addr_code(row_value, 4)
        addr_code(row_value, 14)
        addr_code(row_value, 51)
        addr_code(row_value, 63)         
        ## 身份证号检查, 第12项 
        check_id(   row_value[12] )
        #班级检查
        assert row_value[15] == "2015102"
        #入学年份检查
        assert row_value[16] == "201509"
        #入学方式:
        assert row_value[17] == "就近入学" 
        assert row_value[18] == "走读" 

        print (row_value)
    except Exception as e:     
        print (traceback.format_exc() )                
        print ("Error", filename)
        print (e)       
    #for index , value in enumerate(row_value):
        #if "130104200905133362" in value:
            #print (index)
        #if ("000000" in value):
            #print (index, value)
    
    return row_value
     
def read_files( dir_path ):
    for filename in os.listdir(path=dir_path):
        if filename.endswith("xls"):
            file_path = os.path.join(dir_path, filename)    
            yield read_one_file(file_path, sheetName="学生基础信息")
 

def write2file(targetFile,dir_path):  

    #w = xlwt.Workbook()
    #ws = w.add_sheet(‘学生基础信息‘)    
    ##dir_path = r‘H:\Work\Python\xueji\app\input_files‘
    #for row_index, row in enumerate( read_files(dir_path) ):
        #for  col_index , col_value in enumerate(row):
            #ws.write(row_index, col_index, col_value ) #注意单元格坐标从(0,0)开始  
    #w.save(targetFile)  
    
    #import csv
    #with open( targetFile, mode="w") as f:
        #writer = csv.writer( f )
        #for row_index, row in enumerate( read_files(dir_path) ):
            #writer.writerow(row)    
    
    from openpyxl import Workbook
    wb = Workbook()
    
    # grab the active worksheet
    ws = wb.active
    for row_index, row in enumerate( read_files(dir_path) ):
        #writer.writerow(row)        
        # Rows can also be appended
        ws.append( row )
    wb.save("./output/output.xlsx")

if  __name__ =="__main__":  
    dir_path = r‘H:\Work\Python\xueji\app\input_files‘
    write2file( "./output/学籍模板最新正式统计表.csv", dir_path)
    #read_files(dir_path)
时间: 2024-10-13 11:52:14

小学 学生学籍信息汇总处理代码的相关文章

C语言学生学籍信息管理系统源码附赠实验报告

一.课程设计目标 C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题.编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务.本课程设计具有如下特点:重点在于C语言的基本特征上,涵盖了C语言的重要基础知识.结合了实际应用的要求,使课程设计既涵盖知识点,又接近工程实际需要.通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力以及编程能力,并养成良好的编程习惯. 另外,在实际编程中,为了提高编程质量

学生学籍管理系统_管理员登陆对学生的信息进行操作

MInterface.java package studentManage; import java.awt.*; import java.awt.event.*; import javax.swing.*; /* * 管理员 * 操作界面接口类,可以直接扩展.调用. */ public class MInterface extends JFrame implements ActionListener { static JMenuBar jMenuBar = new JMenuBar();//

[C语言练习]学生学籍管理系统

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

学生学籍管理系统

<span style="color:#ff0000;"> 学生学籍管理系统</span> 这个项目用了一天半的时间就完成了,一开始我没打算用链表来实现的,但是我自学链表也有一段时间了,想看看自己对链表掌握了多少,所以选择了用链表.第一次用链表写了一个系统,难免会有Bug,希望各位程序猿能指点一下..... /********************************************** 学生学籍管理系统 每个学生的信息包括:学号.姓名.性别.三门

JAVA学生学籍管理系统

每天记录学习,每天会有好心情.*^_^* 今天记录的项目是基于JAVA的学生学籍管理系统,基于JAVA的学生学籍管理系统项目是这么回事:电子学籍系统可对学生学籍注册.档案管理.学籍异动.升级.毕业.成长记录实现全程信息化管理.采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库.2013年12月8日,教育部基础教育一司司长王定华在长春出席会议时表示,中小学电子学籍系统将在2013年年底全国联网,2014年正式实现开通,今后中央在一些经费支持方面,将与

学生宿舍信息管理系统

#include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define PAGE 3 #define MAX 1000 #define N 5 int k=0; /*结构体类型*/ typedef struct {   int num;/*宿舍号*/ char name[20];/*姓名*/ char sex[5];/*性别*/ int

Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF

Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF 游戏开发者大会,旧金山– The Khronos? Group, 一个由领先硬件和软件公司组成的组织,在游戏开发者大会(GDC)上发布了主要API更新和新工作组成立的消息.在本周,我们将有一系列Khronos赞助的活动,The Khronos Group在加速跨平台API的开发,并为开发者们带来了最新的硬件功能.Khronos 一如既往地致力于搭建在整个业界广泛使用的开放标准的合作社群,最近在GDC发布的AP

ASP.NET获取请求的url信息汇总

ASP.NET获取请求的url信息汇总 最近做项目需要处理一个用代码获取当前网站的域名或ip信息的问题,于是尝试了ASP.NET中各种获取url信息的方法,在此总结一下: 在Global.asax文件中的 Application_BeginRequest 方法中,加入以下代码,利用日志文件记录各种方法得到的信息 HttpApplication app = sender as HttpApplication; logger.Debug("Request.ApplicationPath:"

高校学生学籍系统C++&amp;mysql

#include <iostream> #include <stdlib.h> #include <string> #include <winsock2.h> #include <mysql.h> #pragma comment(lib,"ws2_32") #pragma comment(lib,"libmysql") using namespace std; class Student { int id;