一、目的

目前本人就职与甲方的工作,由于公司的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. boostrap原理.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. [转载]【转】教你如何实现linux和Windows之间的文件共享,samba的安

    原文地址:[转]教你如何实现linux和Windows之间的文件共享,samba的安装与配置作者:铅笔小蜡 本人在虚拟机下装fedora13,已经实现.1. 首先检查os是否安装好了samba. [r ...

  3. 关于Python中的yield的理解

    生成器:yield表达式构成的函数就是生成器:每一个生成器都是一个迭代器(但是迭代器不一定是生成器).return就是迭代器: yield的功能类似于return,不同之处在于它返回的是生成器. 什么 ...

  4. sublime3中运行python文件

    sublime3中运行python文件 tools->build system->new build stystem 粘贴下面代码{"cmd":["pytho ...

  5. jquery手机端横屏判断方法

    jquery手机端横屏判断方法<pre>$(function() { var bodywidth = $('body').width(); var bodyheight = $('body ...

  6. static静态关键字

    转载自大佬:https://www.cnblogs.com/xrq730/p/4820992.html 静态资源和静态方法 首先,静态的资源和方法等会随着类的加载而进入内存被初始化,而非静态的资源和方 ...

  7. PHP Openssl 生成公钥私钥

    <?php //配置信息 $dn = array( "countryName" => "GB", "stateOrProvinceName ...

  8. 详解Vue 方法与事件处理器

      本篇文章主要介绍了详解Vue 方法与事件处理器 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 方法与事件处理器 方法处理器 可以用 v-on 指令监听 DOM 事件 ...

  9. 替换"marquee",实现无缝滚动

    js的marquee标签,可以实现元素循环滚动,但是不能无缝连接,要实现“无缝滚动”的效果必须使用js(借鉴百度),思路是使要滚动元素相对位置不断改变,上下滚动就相对top或者bottom,左右滚动就 ...

  10. Jsp自学2

    Jsp简单来说就是java代码与Html代码的组合,类,方法,属性跟网页展示夹杂在一起.Jsp就是Servlet,但比Servle简单,不需要配置web.xml(当然也可以配置).Jsp由模板数据与元 ...