一、目的

目前本人就职与甲方的工作,由于公司的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套打打印的更多相关文章

  1. linux----------安装Supervisor是用Python开发的一套通用的进程管理程序

    1.linux环境必须安装 python 2.yum install python-setuptools 3.获取supervisor包 wget https://pypi.python.org/pa ...

  2. Python开发基础-Day24socket套接字基础2

    基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 #客户端 import socket ip_port=('127 ...

  3. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  4. python socket编程---从使用Python开发一个Socket示例说到开发者的思维和习惯问题

    今天主要说的是一个开发者的思维和习惯问题. 思维包括编程的思维和解决一个具体问题的分析思维,分析思路,分析方法,甚至是分析工具. 无论是好习惯还是不好的习惯,都是在者一天一天的思维中形成的.那些不好的 ...

  5. python 开发之路 - 入门

    一. python 介绍 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.1991年 发布Python ...

  6. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  7. python开发第一篇:初识python

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  8. Python开发(一):Python介绍与基础知识

    Python开发(一):Python介绍与基础知识 本次内容 一:Python介绍: 二:Python是一门什么语言 三:Python:安装 四:第一个程序 “Hello world” 五:Pytho ...

  9. python与excel的关系;铁打的python流水的excel

    现在很多行业,都离不开用Excel: 做财务的,要用Excel做报表:做物流的,会用Excel来跟踪订单情况:做HR的,会用Excel算工资:做分析的,会用Excel计算数据做报表.不知道你有没有这样 ...

随机推荐

  1. 微软宣布加入 OpenJDK,看网上各派的热闹

    微软宣布加入 OpenJDK 项目(https://www.oschina.net/news/111036/microsoft-to-participate-in-openidk),这两天在微信公众号 ...

  2. SpringBoot 2.0 开发案例之百倍级减肥瘦身之旅

    前言 为了存我的小黄图,最近在做一款图床服务,集成了各种第三方云存储服务,目前正在内部测试阶段.项目是以Jar的形式运行在腾讯云上,不要问我为什么使用腾讯云了,因为阿里云老用户和狗不得入内. 问题凸显 ...

  3. docker安装sshd

    基础镜像: ubuntu:14.04 启动并安装sshd //启动 docker run -it ubuntu:14.04 /bin/bash //更新apt-get apt-get update / ...

  4. nginx基于uwsgi部署Django

    1.安装nginx yum install -y nginx(需要epel源) 2.安装uwsgi yum groupinstall "Development tools" yum ...

  5. Asp.Net Core 单元测试正确姿势

    背景 ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,并且默认注入了很多服务,具体可以参考 官方文档, 相信只要使用过依赖注入框架的同学,都会对此有不同深入的理解,在此无需赘言. ...

  6. LVS NAT模式实践

    client:192.168.4.10/24 proxy:192.168.2.5/24 192.168.4.5/24 web1:192.168.4.100/24 web2:192.168.4.200/ ...

  7. CSPS模拟 44

    状态不是很好吧 这套和前边是一套的, skyh在我旁边AK,好像开了三个对拍又在拼小人 T3 正解没调出来,暴力又忘交了qwq 当时心情都要爆炸了 T1 区间$gcd$乘区间长度的最大值 暴力是$n^ ...

  8. 磁盘冗余阵列之RAID10的配置

    1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...

  9. 2018年7月份JAVA开源软件TOP3

    微信开发 Java SDK Weixin Java Tools 评分: 9.6 介绍: 信开发 Java 开发工具包(SDK),支持包括微信支付.微信开放平台.小程序.企业号/企业微信.公众号(包括服 ...

  10. websocket socketJs

    springboot实现服务器端消息推送(websocket + sockjs + stomp)   服务器端推送技术在web开发中比较常用,可能早期很多人的解决方案是采用ajax向服务器轮询消息,这 ...