轻松办公系列1:利用python自动收集培训人员名单

        近期,领导让我组织全行培训,心中暗自叫苦不迭,心想,现在人手这边短缺,只有无穷无尽的工作,没有看得到的空闲。牢骚归牢骚,工作还要开展,领导让先收集全行报名信息,于是制订登记表,邮件上收回来了近百份文件,近百份文件手工合并,工作太无奈!人生无奈,我用python! 编个小程序自动采集吧。

       单个数据表单如下(数据表单不复杂,问题是太多份,存放在同一目录下):

       

            编程工具使用 Sublime Text ,这个工具小巧灵活,编写工具类的python代码非常合适。 

            使用的编程工具是python3.7。

           1、编写一个遍历目录下全部文件的工具类:

            在目录  /baseframe/file/新建python文件  filetool.py ,代码如下:

import os

def getAllFile():
    print('  this is a test 1')
    
    
def getAllFile2():
    print('  this is a test 2')
        
def get_filelist(dir):
    filelists=[]

    for home, dirs, files in os.walk(dir):
        for filename in files:
            if(filename[0]!='~'):
                filelists.append( os.path.join(home, filename))
    return filelists
    
def get_split_filelist(dir):
    filelists=[]

    for home, dirs, files in os.walk(dir):
        for filename in files:
            filepath=(home,filename)
            filelists.append(filepath)
    return filelists

def get_filename(dir):
    filelists=[]

    for home, dirs, files in os.walk(dir):
        for filename in files:
            filelists.append(filename)
    return filelists

          2、编写合并数据文件的主程序:

       原始数据文件统一存放在/office/excel/source/trainer目录下,合并后的数据文件新生成一个空白文件,存放在D:/result/alltrainer.xls

import xlrd
import xlwt

from baseframe.file import filetool as fo

path = "/office/excel/source/trainer"
fileList = fo.get_filelist(path)

all_data=[]
id_finisthed=[]


for filename in fileList:
    xlsx=xlrd.open_workbook(filename)
    table=xlsx.sheet_by_index(0)
    print(filename) #有一个分行使用的格式不正确
    for n in range(2, table.nrows):
        tno = table.cell(n, 1).value
        tid = table.cell(n, 2).value
        tname = table.cell(n, 3).value
        torg = table.cell(n, 4).value
        data = {'tno': tno, 'tid': tid, 'tname': tname,'torg':torg}
        all_data.append(data)

print('原数据记录总数',len(all_data))

new_wb=xlwt.Workbook()
newsheet=new_wb.add_sheet("new1")

rowno=1
for i in range(len(all_data)):
    if(all_data[i]['tid']!="" and all_data[i]['tid']!="无" and all_data[i]['tid'] not in id_finisthed):
        #过滤员工号为空为无,根据员工号增加去重处理
        id_finisthed.append(all_data[i]['tid'])
        newsheet.write(rowno,1,rowno)
        newsheet.write(rowno,2,all_data[i]['tid'])
        newsheet.write(rowno,3,all_data[i]['tname'])
        newsheet.write(rowno,4,all_data[i]['torg'])
        rowno+=1
print('处理后记录总数',rowno-1)
new_wb.save('D:/result/alltrainer.xls')

    以上是简单汇单,还有去重,套模板、数据合并,下回分解,更多精彩!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值