美文网首页Python语言与信息数据获取和机器学习大数据 爬虫Python AI SqlPython 运维
python 实现众多excel表格中关键数据追加项目配置库台账

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

作者: 唐小猴 | 来源:发表于2017-10-30 19:02 被阅读237次

    网上已经有很多这类的文章了,今天写这个就算是对今天的写的这个脚本的一个巩固和说明吧,话说同事每个月末都要从大量的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')

    相关文章

      网友评论

        本文标题:python 实现众多excel表格中关键数据追加项目配置库台账

        本文链接:https://www.haomeiwen.com/subject/nkrmpxtx.html