在工作中遇到需要将子表项目添加到汇总表中,存在以下特点:
工作中遇到需要将子表项目汇总到汇总表中,存在以下特点:
1、表头复杂,存在合并的单元格,考虑分解单元格并填充空白单元格。
2、子表中存在汇总表没有的项目,考虑将子表分别标示异同项目,创建辅助的汇总表,内容为子表的相同项目。
(原设想为子表自动添加到汇总表中,并自动增开汇总表缺失项目。经过试验,表头排序暂时无法解决,故改为人为判断插入位置。)
一、原文件
原汇总表:
原子表:
二、思路
1、将汇总表、子表分解表头,保存新的汇总表和子表:01分解后的汇总表,02分解后的子表
2、比对分解后的汇总表和子表,生成仅含相同项的03汇总表.xls,同项绿色底,异项红色底的04子表。
3、后续可根据03表和04表处理数据。
三、代码
xlrd模块只能读取数据,不能写入数据,xlwt写入数据,记得打开单元格重写,否则无法改写已有数据的单元格。
from openpyxl import *
import xlrd
import xlwt
import xlutils.copy
import pandas as pd
import csv
import os
def setstyle(pattern_fore_colour= 0x0A,borders_left= 1,borders_right= 1,borders_top= 1,borders_bottom = 1):
style = xlwt.XFStyle()
pat = style.pattern
pat.pattern = 1 # 打开填充
pat.pattern_fore_colour= pattern_fore_colour #红色
borders2_2 = style.borders #定义边框
borders2_2.left,borders2_2.right,borders2_2.top,borders2_2.bottom = borders_left,borders_right,borders_top,borders_bottom
return style
# @@@@@@@@@@@@@@@@----------------------分解表头----------------------@@@@@@@@@@@@@@@@
"""
将输入的xls表分解合并的单元格,并填充这些单元格的数值,形成新的xls保存到电脑里
"""
# 打开汇原始表,用函数形式,返回sheet表实例对象
def open_wb_sht(filepath, sheetname='Sheet1'):
wb = xlrd.open_workbook(filename=filepath, formatting_info&#