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$

 

posted @ 2019-12-03 17:47  帆帆Evan  阅读(4626)  评论(0编辑  收藏  举报