python操作EXCEL

python操作excel的包有不少,这次记录xlrd、xlwt、xlutils三个包的使用。
从名字可以看出来,
xlrd用于excel的读取,
xlwt用于excel的写入。
xlutils呢,用于xlrd和xlwt的转换。

使用流程

你希望在一个有内容的excel中写入东西,那么需要先用xlrd打开excel,然后用xlutils将xlrd转换为xlwt,还是挺麻烦的。

代码示例

现在有两张学生名单表,记录了选修xx课的学生名单,t1.xls,t2.xls。t2是开学之初选了这门课的学生吗名单,t2是学期末加上补选学生的最终名单表。
平时作业情况都记录在t2中,现在希望将t2的信息写入t1中,由于两个表的学生信息并不一一对应(t1包含t2),且学生人数超过100人,一个一个粘贴辅助非常麻烦,于是使用python来自动化操作。

import xlrd,xlwt
from xlutils.copy import copy

t1 = xlrd.open_workbook("t1.xls")    #打开t1
t2 = xlrd.open_workbook("t2.xls")    #打开t2

t1_sheet = t1.sheets()[0]    #获取工作空间
t2_sheet = t2.sheets()[0]

t1_rows = t1_sheet.nrows    #获取各个表的总行数
t2_rows = t2_sheet.nrows

n = 22   #平时作业占的总列数,一共有22次平时作业,占22列

t1_w = copy(t1_sheet)          #使用xlutils的copy函数,将t1从读取模式转换为写入模式
t1_ws = t1_w .get_sheet(0)      #获取工作空间  
for i in range(t1_rows):          #遍历整个t1表,若t1表中的学生学号存在于t2表中,则将t2的作业情况写入t1中
    if(i>0):
        for j in range(t2_rows):      #遍历t2
            if(t2_sheet.cell(j,2).value == t1_sheet.cell(i,2).value):  #若找到该学生,则将信息写入t1(学号索引为2)
                for k in range(n):
                    t1_ws.write(i,7+k,t2_sheet.cell(j,5+k).value)   #写入操作(将t2中5-27列的信息写入t1表7-29列中)
t1_w .save('demo.xls')      #记住保存,不然以上操作不会记录

你可能感兴趣的:(python操作EXCEL)