python 实现众多excel表格中关键数据追加项目配置库台账.xlsx

网上已经有很多这类的文章了,今天写这个就算是对今天的写的这个脚本的一个巩固和说明吧,话说同事每个月末都要从大量的excel表格中导出一点点数据并输出到另一个表格中,所以想啊,写个脚本自动化一点吧,不然每次都会浪费时间。

计划有三步:

1、将众多的excel表格的名称输出到namexls文件中

2、根据namexls文件名循环打开xls文件读取相应位置的数据存储到列表里

3、打开要导入的文件并将列表里面的内容存储到excel表格中 

很简单

初始模块

#!/bin/env python 

import xlrd,xlwt,xlutils,os,sys   

# xlrd python从xls读取控件   xlwt python 向xls写入控件  xlutils 是xlrd xlwt的工具箱

#os模块提供对linux操作系统的操作的函数  sys模块负责程序与python解释器的交互

from xlrd import open_workbook

from xlutils.copy import copy

reload(sys)

sys.setdefaultencoding('utf-8')

#设置字符集为utf-8格式并 reload循环加载 为啥要循环加载呢 因为啊每次加载完sys后,setdefaultencoding方法会被删除掉所以要循环加载,you know

1、将众多的excel表格的名称输出到namexls文件中

path = os.getcwd() #获取当前路径

path = (path + '/excel/') #获取众多excel表格路径即当前路径下的excel目录里

f = open('namexls','wb')

for filename in os.listdir(path):

                f.write(filename)

                f.write('\n')

f.close()  

2、根据namexls文件名循环打开xls文件读取相应位置的数据存储到列表里

f = open('namexls')

lines = f.readlines()

for line in lines:

                   data = xlrd.open_workbook(path + line).strip()  #打开xls文件 strip 去掉头尾指定字符

                   table = data.sheets()[0]  #打开xls文件里面第一个表

                   nrows = table.nrows

                    ncols = table.ncols    #统计第一个表的行数和列数 

                     rownames =  table.row_values(2)

                     rownames1 =  table.row_values(3) #过去第一个表里面的第二行值和第三行值分别给                      变量rownames rownames1

                     list1 = []

                     list2 = []     #定义两个列表用于接受两个变量rownames rowname1的值                 

                     for  i in range(1,ncols):  #i 从1循环到最后一列

                                     if  rownames[i]:  # 如果第二行里面某列值不为空则执行下面命令

                                                     list1.append((rownames[i]))  #将第二行各列不为空的值添加到列表list1当中

                    for i in range(1,ncols):  #同理
                                      if  rownames1[i]:#同理

                                                      list2.append((rownames1[i])) #同理

                     svnurl = (('url' + list1[2]).strip()+'_SVN')  #将字符串和列表list1的第三个元素拼接获取VN库路径

                    list3 = [] #定义一个空列表来接收list1和list2内某些特定元素 

                    list1[1] = list1[2]

                     list[2]  = svnurl

                      list3.append(u'项目交付部')

                      list3.append(list1[1])

                      list3.append(list1[0])

                      list3.append(list2[0])

                       list3.append(list1[2])  # 以上为list1和list2列表中特定元素输出到list3中

3、打开要导入的文件并将列表里面的内容存储到excel表格中

                      rexcel = open_workbook('项目配置库台账2017.xlsx',formatting_info=True) #打开要输入的excel表格  formatting_info 参数保证原有表格格式不变化

                     rows = rexcel.sheets()[0].nrows

                      cols = recel.sheets()[0].ncols   #统计表中行数和列数

                       excel = copy(rexcel)   #copy表

                       table = excel.get_sheet(0)   #获取第一张表

                       j = 0 

                       for  i in list3:  #i变量循环读取list3里面的数据

                                       table.write(rows,j,i)  #对最后一行第j列追加list3的数据i 

                                        j += 1   #第一列追加完成后加1对第二列进行追加

                       row += 1   #namexls文件中第一个xls文件关键数据执行完后换行执行第二个xls文件关键数据

                      excel.save(''项目配置库台账2017.xlsx)  #对文件进行保存操作

至此众多excel表格中关键性数据追加项目配置库台账2017.xlsx完成,每个月只要将众多excel表格放置/home/CMstandingbook/excel 执行CMstandingbook.py 便可实现配置库台账的自动更新

源码如下:

#!/bin/env python

import xlrd,xlwt,xlutils,os,sys

from xlrd import open_workbook

from xlutils.copy import copy

reload(sys)

sys.setdefaultencoding('utf-8')

path = os.getcwd()

path = path +'/excel/'

f = open('namexls','wb')

for fliename in os.listdir(path):

f.write(fliename)

f.write('\n')

f.close()

f = open('namexls')

lines = f.readlines()

for line in lines:

data = xlrd.open_workbook((path + line).strip())

table = data.sheets()[0]

nrows =  table.nrows

ncols =  table.ncols

colnames = table.row_values(2)

colnames2 = table.row_values(3)

list1 = []

list2 = []

for i in  range(1,ncols):

if colnames[i]:

list1.append(colnames[i])

for i in  range(1,ncols):

if colnames2[i]:

list2.append(colnames2[i])

svnurl = (('https://111.200.54.229:8443/svn/'+list1[2]).strip()+'_SVN')

list1[1] = list1[2]

list1[2] = svnurl

list3 = []

list3.append(u'项目交付部')

list3.append(list1[1])

list3.append(list1[0])

list3.append(list2[0])

list3.append(list1[2])

rexcel = open_workbook('项目配置库台账2017.xlsx',formatting_info=True)

rows = rexcel.sheets()[0].nrows

cols = rexcel.sheets()[0].ncols

excel = copy(rexcel)

table = excel.get_sheet(0)

print cols

print rows

j  = 0

for  i in list3:

table.write(rows,j,i)

j += 1

rows +=1

excel.save('项目配置库台账2017.xlsx')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,719评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,337评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,887评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,488评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,313评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,284评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,672评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,346评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,644评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,700评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,457评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,316评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,706评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,261评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,648评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,859评论 2 335

推荐阅读更多精彩内容