1分钟实现:按某列内容分类汇总,分页打印 Excel 表格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1分钟实现:按某列内容分类汇总,分页打印 Excel 表格相关的知识,希望对你有一定的参考价值。
参考技术A在工作中时不时会遇到一些快速数据打印汇总的场景,有时我们甚至需要按照某一列的数据进行分类后,再将数据按照类别分别打印出来。
例如「接待客人」:
物品们有一张来宾总名单,我们需要按照来宾的「国家」快速分个类,然后按照不同国家,把客人名单打印成几张,每张对应的是这个国家里的客人名单和总人数,然后将这些清单交给不同语种的翻译人员去负责接待。
又比如「销售统计」:
我们有张销售总表,现在要快速按照「销售月份」分个类,1年的销售数据要打印出12张纸,每张纸是当年1个月的销售数据。这样我们可以在纸面上快速比较每月的情况。
火箭君知道有些单位,专门雇一个人把所有报表按照列排个序,然后一股脑都打印出来,然后再人工找到分类的界线,把报表裁剪成几张。我们觉得效率很低下是吗?这不是笑话,这是曾经真实发生的事情。
下面是我们的做法,假设有这样一个表格,我们想按照「街镇」分个类,然后分别打印出来, 每个街镇一张纸,一张纸包含这个街镇下的所有单位。
具体步骤
>>>> 先要 排序表格
右键选中「街镇」一列 》 选择 「排序」 》点击「降序」(或者「升序」也可)
>>>> 选择数据的「分类汇总」
快捷键「Ctrl+A」全选表格 》选择Excel顶部 「数据」 》点击右上角 「分类汇总」 。
>>>> 编辑「分类汇总」内容
选择「分类字段」为 「街镇」 》选择汇总方式为 「计数」 》勾选「选定汇总项」下「街镇」 》勾选 「每组数据分页」》 最后点击「确定」按钮。
点击「确定」后,表格会发生变化
>>>> 完成!直接打印即可
这种状态下直接去「打印」即可。
来看看最终效果
是不是很方便?
踩坑d8:列表中添加字典 读写同一个exce的sheet页
在往列表中添加字典时若使用为键赋值的方式,则会出现前面的字典数据被最后一条字典数据覆盖。
l = []
data = {}
for i in range(1, 3):
data[‘url‘] = i + 1
data[‘method‘] = i + 2
l.append(data)
print(l)
#[{‘url‘: 3, ‘method‘: 4}, {‘url‘: 3, ‘method‘: 4}]
原因:列表的append方法在为其添加数据的时候并没有将完整的字典数据都拷贝的列表当中(为了提高空间的使用率),而是存储字典数据所在地址,而以上字典修改的是同一个内存地址下的数据,内存地址id没变
解决办法:每次为列表添加数据的时候,在内存中其他位置创建与该字典相同的数据并加入列表(若字典内包含列表,需要使用deepcopy)
l = []
data = {}
for i in range(1, 3):
data[‘url‘] = i + 1
data[‘method‘] = i + 2
l.append(data.copy())
print(l)
#[{‘url‘: 2, ‘method‘: 3}, {‘url‘: 3, ‘method‘: 4}]
### xlrd读excel是从(0,0)开始
### load_workbook可以读写操作同一个excel,,是从(1,1)为起点 #坑
from openpyxl import load_workbook
def write_operate(self,path,sheetname,nrow,ncol,info):
self.path = path
target_book = load_workbook(path)
sheetname = target_book.active
sheetname.cell(nrow,ncol,info)
target_book.save(path)
json.loads 用于解码 JSON 数据 json.dumps,将 Python 对象编码成 JSON 字符串
## json.json.loads(data),data内必须使用双引号,不能使用单引号 ##坑
##json.json.dumps(pythonobj,ensure_ascii=False) #有中文时候加上
以上是关于1分钟实现:按某列内容分类汇总,分页打印 Excel 表格的主要内容,如果未能解决你的问题,请参考以下文章