表格合并工具
在日常工作中会有许多的琐碎的事务,例如表格汇总,信息统计等等。为了提升工作效率,可以通过脚本来完成重复性高、冗余性强的工作内容。本次任务是汇总各专业的上报信息,表格的模板是固定的,因此可以设计脚本进行直接合并,降低人工操作过程中出错的风险,提高工作效率。
- 表格信息提取
- 信息合并和保存
表格信息提取主要包括标题以及目标信息。标题只需提取一次,提取过程主要围绕目标信息展开。用到的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进行设计,输出得到最终文件即可。
未来提升:
- 表格信息去重
- 多线程处理大量表格