Python开发-实现Excel套打打印
一、目的
目前本人就职与甲方的工作,由于公司的ERP比较烂无法完美的设计套打,就想着自己用Python开发一个套打工具。
二、开发过程
刚开始我打算用Html的方式生成打印的文档,但是有两个无法解决的问题。
1、Chrome对html的最小字号锁定了8号,需要写缩放。
2、HTML的设计只有开发才能完成,会把工作留在自己部门。
最后锁定了还是EXCEL做个套打的模板,根据EXCEL来生成需要打印的EXCEL。
三、实现的功能
1、模板Sheet页中所有格式完美的打印。
包括行高、列高、合并单元格、填充色、字体、字体的样式
实现效果
模板
打印效果
2、支持多个Sheet数据的打印。
3、支持明细表的打印。
控制每个Sheet打印的明细表行数,如果超出可打印行,输出到另外的Sheet、SheetName是SheetName_N。
4、基于性能关系,用xlrd,xlwt进行Excel的操作,所以不支持excel07以上的版本。
5、由于Excel07以下的版本每个文件只支持255个Sheet,基于性能考虑每个Excel文件只存放100个Sheet。超过100个Sheet,输出到另外一个Excel文件。
四、代码实现
1、安装c_excel_template库
需要源码的可以下载了看
pip install c_excel_template
2、测试的数据
from c_excel_template import Excel_Template
#模板的文件
template_file="example.xls"
#模板文件的Sheet名
template_sheet="example" test=Excel_Template(template_file,template_sheet)
#保存的文件名
save_name="test3.xls"
#开始输出
test.print_excel_with_template(save_name=save_name,print_data=print_data)
打印数据说明
# test:sheetname test2-主表的变量 test1-主表变量 d1明细表名
print_data={"test":{'test2':"ddd", 'test1': "BBB","d1":[]}}
#明细表"d1"的值以list方式输出 [{"orderno":"A1","sales":"B1"}]
for i in range(1,120):
print_data["d1"].append({"orderno":f"A{i}","sales":f"B{i}"})
EXCEL打印模板的设计
主表的变量:$变量$
明细表的变量:$明细表名.明细表字段名$
明细表开始行标记:$明细表名.start_id$
明细表结束行标记:$明细表名.end_id$
Python开发-实现Excel套打打印的更多相关文章
- linux----------安装Supervisor是用Python开发的一套通用的进程管理程序
1.linux环境必须安装 python 2.yum install python-setuptools 3.获取supervisor包 wget https://pypi.python.org/pa ...
- Python开发基础-Day24socket套接字基础2
基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 #客户端 import socket ip_port=('127 ...
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- python socket编程---从使用Python开发一个Socket示例说到开发者的思维和习惯问题
今天主要说的是一个开发者的思维和习惯问题. 思维包括编程的思维和解决一个具体问题的分析思维,分析思路,分析方法,甚至是分析工具. 无论是好习惯还是不好的习惯,都是在者一天一天的思维中形成的.那些不好的 ...
- python 开发之路 - 入门
一. python 介绍 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.1991年 发布Python ...
- python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...
- python开发第一篇:初识python
一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...
- Python开发(一):Python介绍与基础知识
Python开发(一):Python介绍与基础知识 本次内容 一:Python介绍: 二:Python是一门什么语言 三:Python:安装 四:第一个程序 “Hello world” 五:Pytho ...
- python与excel的关系;铁打的python流水的excel
现在很多行业,都离不开用Excel: 做财务的,要用Excel做报表:做物流的,会用Excel来跟踪订单情况:做HR的,会用Excel算工资:做分析的,会用Excel计算数据做报表.不知道你有没有这样 ...
随机推荐
- 设计模式C++描述----18.中介者(Mediator)模式
一. 举例 比如,现在中图和日本在关于钓鱼岛问题上存在争端.这时,联合国就会站出来,做为调解者,其实也没什么好调解的,钓鱼岛本来就是中国的,这是不争的事实!联合国也就是个传话者.发言人. 结构图如下: ...
- zabbix导入数据库报错1046 (3D000) : No database selected
Zabbix导入数据库时报错 使用如下命令导入Zabbix数据库时报错 zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u ...
- 使用Bind提供域名解析服务(反向解析)
小知识: 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名 ...
- [Spark]Spark-streaming通过Receiver方式实时消费Kafka流程(Yarn-cluster)
1.启动zookeeper 2.启动kafka服务(broker) [root@master kafka_2.11-0.10.2.1]# ./bin/kafka-server-start.sh con ...
- [考试反思]0916csp-s模拟测试44:可笑
出现了有史以来第一个3首杀AK啊...然而跟我没有丝毫关系 (曾经还是有一次考试差点就有那么一点关系的...) 然而反正我考得很水就是了.不是很垃圾,而是很水. 这套题是真的水... T1不会证复杂度 ...
- MongoDB 谨防索引seek的效率问题
目录 背景 初步分析 索引seeks的原因 优化思路 小结 声明:本文同步发表于 MongoDB 中文社区,传送门: http://www.mongoing.com/archives/27310 背景 ...
- windows系统一台电脑先后添加多个git账号
概述 电脑上已经配置了github的ssh连接.现在又有一个不同的git账户,也就是要在一台电脑上配置两个git账号. 下面记录一下我配置的方法. 一.取消git全局配置 之前配置github的时候, ...
- 《吊打面试官》系列-Redis终章_凛冬将至、FPX_新王登基
你知道的越多,你不知道的越多 点赞再看,养成习惯 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联 ...
- NOIP模拟测试12
T1 斐波那契 一道找规律题,被我做成了贼难的题. 观察图片可知x=f[i-1]+j.(j为x的父亲)且j<=f[i-1],然后就二分找父亲没了. #include<bits/stdc++ ...
- phpstorm设置内存限制的方法
phpstorm设置内存限制的方法有时候用phpstorm写代码 1个文件代码多的话会很卡 那就要修改内存限制 E:\Program Files (x86)\JetBrains\PhpStorm 20 ...