zoukankan      html  css  js  c++  java
  • 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$

  • 相关阅读:
    app.config应该放哪?
    Connection 和Dispose的学习日志
    简单的sqlhelper的学习日志
    EF 事务(非分布式事务)
    Angularjs 地址联动2.1.1
    C# 如何物理删除有主外键约束的记录?存储过程实现
    C# 枚举基本用法及扩展方法
    JS 去除重复元素的方法
    MVC4程序运行报错
    ASP.NET MVC4 & Entity Framework 6.0 IIS 部署出错解决方案
  • 原文地址:https://www.cnblogs.com/Evan-fanfan/p/11978412.html
Copyright © 2011-2022 走看看