python处理excel

话不多说,先贴个图

1051379949.jpg

    老师让我从那一堆作业文件里根据名字给他整理出班级学号名字等信息。
    六十多个人纯手打很明显不行,不断的切换来切换去比对信息,完成至少得四十分钟以上。如果人数再多点,要整理的cell也多点很明显人工弄是不行的,所以~~~
    简单点~~工作的方式简单点~~~所以还是把整个年纪的信息要来,这里记作books。从老师给的图里把所有交了作业的学生名字统计下来存到文本txt中,然后把名字当成关键词,在books检索出所有与txt中的关键册配对的行信息rows。最后再新的excel表中存入rows。


查了一下,需要用到的模块就两个,xlrd、xlwt
顾名思义,这很明显分别是xls的read和write模块


首先第一步,统计出txt。

    纯人工手打,没有捷径。

Screenshot from 2019-01-07 00-06-41.png

WARN:为了方便后面的文件io操作,存储方式为每个名字占一行


import os

with open ('./name.txt', 'r') as f:
  names = f.read.splitlines()

这时候的names就是我要的关键词列表

next,提取books

    直接上代码

import xlrd
#xlrd是读取模块

#打开一个workbook
workbook = xlrd.open_workbook('./books.xls')

#获得所有xls表的页的名称
wordsheets = workbook.sheet_names()
#打印wordsheets,当然这里只有一个
#把需要的sheet页通过名字来定位
worksheet = workbook.sheet_by_name(u'Sheet1')

rows_num = worksheet.nrows

#将配对后的行信息存到need中
need = []
for name in names:
  for cur_row in range(rows_num):
    row = worksheet.row_values(cur_row)
    if name in row:
      need.append(row)
#这时候的need就是需要的信息了,接下来写入新的sheet

#顺便给need加上第一行的信息
need.insert(['班级','姓名','学号'])

import xlwt

#创建workbook和sheet对象
workbook = xlwt.Workbook()
sheet1 = workbook.add_sheet('sheet1', cell_overwrite_ok=True)

#将need写入sheet
for i in range(len(need)): 
     sheet.write(i, 0, need[i][0]) 
     sheet.write(i, 1, need[i][1]) 
     sheet.write(i, 2, need[i][2])

#调用workbook对象的save函数
workbook.save('./fina.xls')  

End

你可能感兴趣的:(python处理excel)