欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

日常扩展~~~表格合并小工具

程序员文章站 2022-06-24 17:01:11
...

表格合并工具

在日常工作中会有许多的琐碎的事务,例如表格汇总,信息统计等等。为了提升工作效率,可以通过脚本来完成重复性高、冗余性强的工作内容。本次任务是汇总各专业的上报信息,表格的模板是固定的,因此可以设计脚本进行直接合并,降低人工操作过程中出错的风险,提高工作效率。

  1. 表格信息提取
  2. 信息合并和保存

表格信息提取主要包括标题以及目标信息。标题只需提取一次,提取过程主要围绕目标信息展开。用到的Python库主要有xlrd,datetime。

def get_info(excelName):
    excelFd = xlrd.open_workbook(excelName)
    for sheet in excelFd.sheet_names():
        sheetContent = excelFd.sheet_by_name(sheet)
        row = 2   # 根据需要设计,也可设计为输入参数
        column = 1
        while row < sheetContent.nrows:
            rowContent = []   # 每行的目标信息
            while column < sheetContent.ncols:
                ctype = sheetContent.cell(row,column).ctype
                cell = sheetContent.cell_value(row,column)
                if ctype == 2 and cell % 1 == 0:
                    cell = int(cell)
                elif ctype == 3:
                    date = datetime(*xldate_as_tuple(cell, 0))
                    cell = date.strftime('%Y-%m-%d %H:%M:%S')
                    # print(cell)
                elif ctype == 4:
                    cell = True if cell == 1 else False
                rowContent.append(cell)                
                column += 1
            column = 1
            row += 1
            excelContents.append(rowContent)  

该部分在提取目标信息时出现了一段判断ctype的代码。原因是,在第一次输出测试时发现,日期数据会被转化为浮点型输出,在此写入表格时发现并不是原本的日期数据。因此需要对其进行提前转换。通过判断ctype的类型(0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error),将日期数据转换为字符串类型。最终得到全部的目标信息。

信息合并和保存,主要是将得到的目标信息进行汇总。用到的库主要是xlwt。

def save_info():
    workBook=xlwt.Workbook(encoding='ascii')
    workSheet=workBook.add_sheet('......')
    style = xlwt.XFStyle() # 初始化样式
    font = xlwt.Font() # 为样式创建字体
    font.name = '黑体' 
    font.bold = True # 加粗
    # font.underline = True # 下划线
    # font.italic = True # 斜体字
    style.font = font # 设定样式
    label=[......]
    for i in range(7):
        workSheet.write(0,i,label[i],style)
    for i,item in enumerate(excelContents):
        workSheet.write(i+1,0,i+1)
        for j in range(len(item)):
            workSheet.write(i+1,j+1,item[j])
    workBook.save(".\summary.xls")

该部分需要注意的问题不多,字体格式和大小通过Font进行设计,输出得到最终文件即可。