精易论坛

标题: 高级表格打印模块,支持模板化打印 [打印本页]

作者: Kumor    时间: 2023-7-25 10:12
标题: 高级表格打印模块,支持模板化打印
本帖最后由 Kumor 于 2023-7-25 10:42 编辑

因为工作需要,写了一个高级表格的打印模块,参考了网上许多无名前辈的东西,在这里完全开源

模块功能:
1. 支持模板化打印,内建完整的模板编辑功能,使用 打印_模板配置 (参数是模板文件路径)调出编辑窗口。默认模板文件为目录下的User.tpl。注:该文件为易语言数据源组件的DSFile文件(类似xls),非奇奇怪怪的可执行文件。
2. 模板编辑类似excel,支持行列插入,单元格合并分解,图片插入,表格线加粗,文字对齐,字体设置等功能
3. 支持隐藏表格线,变相可以实现类似word页眉页脚功能
4. 模板支持占位符替换,在模板单元格里写上 {{xxxx}} 这类字符,相关参数:占位符参数名,占位符参数值自动替换
5. 支持高级表格数据导入,相关参数:表格组件。在模板合适位置写上{{Start}},{{End}},注意,两者应该处于同一列。start表示从此处开始写入高级表格第一行,第一列的数据,后续依次填充,直到{{End}}结束填充,非常适合批量打印购物清单。
6. 支持自定义打印范围,相关参数:列号范围,表头行数。当你只想打印高级表格的某几列,或者前几行不想打印时很有用
7. 支持打印机参数设置,相关参数:打印设置。一些页边距,横向纵向之类的设置

模块命令:
子程序名返回值类型公开备注
打印_高级表格开始打印或预览
参数名类型参考可空数组备注
类型整数型 1=预览,2=打印
模板文件路径文本型
表格组件高级表格 要打印的表格组件
列号范围整数型 数组,要打印的列{2,3,4,7},与模板对应
表头行数整数型 表头不打印的行数
打印设置打印设置信息
占位符参数名文本型
占位符参数值文本型


子程序名返回值类型公开备注
打印_模板配置打开一个模板编辑窗口
参数名类型参考可空数组备注
模板文件路径文本型


子程序名返回值类型公开备注
打印_销毁预览窗口和打印_XXX成对使用


源码所需支持库:
系统核心支持库[krnln]5.7d09f2340818511d396f6aaf844c7e325
高级表格支持库[eGrid]2.110B4337DA651B4b619ACF61334A7E8B47
特殊功能支持库[spec]3.1A512548E76954B6E92C21055517615B0

使用方法:
1. 将源码编译成模块,并将模块和模板文件复制到你的项目目录
2. 调用 打印_模板配置 ( “xxxxx\User.tpl”),建议复制一份默认模板再编辑,养成良好习惯,防止搞丢默认模板。启动模板编辑界面,对于同种格式的打印,编辑一次后保存模板文件即可,无需每次打印前编辑。
内置的模板编辑界面:


3. 调用 打印_高级表格
.局部变量 占位符参数名, 文本型, , "0"
.局部变量 占位符参数值, 文本型, , "0"
.局部变量 打印设置信息, 打印设置信息
占位符参数名 = { “{{客户名称}}”, “{{联系人}}”, “{{订单编号}}”, “{{客户地址}}”, “{{联系电话}}”, “{{制单日期}}”, “{{大写金额}}”, “{{小写金额}}” }
占位符参数值 = { “张三”, “张三”, “000003”, “浙江杭州”, “123456789”, “2022-12-12”, “壹佰”, “100.00” }
打印_高级表格 (类型, PathData + “\tpl\User.tpl”, 高级表格_销售单_产品列表, { 1, 2, 3, 4, 5, 6, 7 }, 1, , 占位符参数名, 占位符参数值)
参数说明:
类型:1=预览,2=打印
PathData + “\tpl\User.tpl”:你的模板文件
高级表格_销售单_产品列表:你想要打印的高级表格
{ 1, 2, 3, 4, 5, 6, 7 }:只打印列号1-7的数据
1:第一行是表头无需打印
占位符参数名, 占位符参数值:提供字符串数组,成员一一对应
实际效果:左边是欲打印的表格和占位符参数,右边是打印预览


4. 调用打印_销毁来关闭预览窗口

code.zip (66.73 KB, 下载次数: 420)



作者: benbenyw    时间: 2023-7-25 11:09
1楼,确实强大的功能,可以设计打印模板省了调用第三方报表库了啊
作者: sinewtec    时间: 2023-7-25 11:23
支持开源~!感谢分享
作者: cqcc    时间: 2023-7-25 11:56
好帖!论坛有你更精彩!
作者: By未命名    时间: 2023-7-25 12:48
这是默认WIN11的皮肤吗,感觉挺简洁的
作者: zytlj    时间: 2023-7-25 13:17
谢谢分享。
作者: renjianhong48we    时间: 2023-7-25 13:32
感谢分享
作者: zifeiyu    时间: 2023-7-25 13:36
6666666666666666
作者: 我們還太嫩    时间: 2023-7-25 13:45

作者: wuqingg    时间: 2023-7-25 14:09
每当有人搞高表、搞超列、搞打印的我就想起这哥们@huage88948216

huage88948216.png (23.36 KB, 下载次数: 2)

huage88948216.png

作者: 指尖流淌    时间: 2023-7-25 14:11
支持开源~!感谢分享
作者: hqz9494    时间: 2023-7-25 14:25
支持开源~!感谢分享
作者: 1347379245    时间: 2023-7-25 14:40
感谢分享
作者: pipicool    时间: 2023-7-25 15:47
学习一下
作者: 情话巴巴爸爸    时间: 2023-7-25 15:58
东西不错,  我之前一直用画板打印...
作者: kyo9766    时间: 2023-7-25 16:33
软件皮肤很漂亮,感谢分享
作者: 小窗润轻风    时间: 2023-7-25 17:07
这个 作品不错。。
作者: 深圳梦    时间: 2023-7-25 19:19
支持开源~!感谢分享
作者: zidoo    时间: 2023-7-25 19:22
谁给个例子,参数三没搞明白,谢谢
作者: luckfish45    时间: 2023-7-25 21:35
zidoo 发表于 2023-7-25 19:22
谁给个例子,参数三没搞明白,谢谢

测试.e (4.38 KB, 下载次数: 20)

作者: 君九    时间: 2023-7-25 22:01
感谢分享
作者: zidoo    时间: 2023-7-25 22:56
luckfish45 发表于 2023-7-25 21:35

谢谢
作者: zidoo    时间: 2023-7-25 23:14
luckfish45 发表于 2023-7-25 21:35

再请教下:
占位符值 = { “张三”, “张三”, “000003”, “浙江杭州”, “123456789”, “2023-01-01”, “壹佰万”, “1000000.00” }

这里面占位符值怎么替换为变量呢?因为加了引号变为文本了,比如2023-01-01我要用当天日期。
作者: 396384183    时间: 2023-7-26 04:21
学习一下
作者: FUYUEPC    时间: 2023-7-26 06:12
好强大的样子,过来看看啦,感谢分享
作者: hxdqdqp    时间: 2023-7-26 08:27
很给力,谢分享!
作者: 一指温柔    时间: 2023-7-26 08:31
感谢分享
作者: 依旧破晓    时间: 2023-7-26 08:37
很好很强大!!
作者: 商务    时间: 2023-7-26 08:58
支持开源,感谢分享!
作者: 1184798949    时间: 2023-7-26 09:56
支持开源,感谢分享!
作者: sck03    时间: 2023-7-26 10:05
很好,很强大
作者: 杨明煜    时间: 2023-7-26 12:42
感谢分享,支持..........
作者: lovely203    时间: 2023-7-26 14:57
支持按行分页打印吗
作者: lovely203    时间: 2023-7-26 15:58
套用数据源。没意义
作者: 一指温柔    时间: 2023-7-27 08:38
感谢分享
作者: luckfish45    时间: 2023-7-27 11:30
zidoo 发表于 2023-7-25 23:14
再请教下:
占位符值 = { “张三”, “张三”, “000003”, “浙江杭州”, “123456789”, “2023-01-01 ...

这个简单,有二种方法解决:
第1种。自己用加入成员构建数组
第2种。数组中时间先不给,直接跳过,然后用插入成员的方式即可。
作者: jykhjylk    时间: 2023-7-27 14:16
这个就高级了,要支持一下
作者: zidoo    时间: 2023-7-28 17:02
luckfish45 发表于 2023-7-27 11:30
这个简单,有二种方法解决:
第1种。自己用加入成员构建数组
第2种。数组中时间先不给,直接跳过,然后用 ...

不是太理解:第一种加入数组,问题是数组也是一个变量,而这里参数占位符值必须加引号,给数组名加上引号就变成文本了,解决不了要使用变量的问题。

作者: luckfish45    时间: 2023-7-28 21:27
本帖最后由 luckfish45 于 2023-7-28 21:31 编辑
zidoo 发表于 2023-7-28 17:02
不是太理解:第一种加入数组,问题是数组也是一个变量,而这里参数占位符值必须加引号,给数组名加上引号 ...

[attach]1269760[/attach]

212746kvvpriswfkubpuwf.png (50.8 KB, 下载次数: 0)

212746kvvpriswfkubpuwf.png

作者: 精易论坛龙    时间: 2023-7-29 13:30
感谢分享
作者: 精易论坛龙    时间: 2023-7-29 13:32
感谢分享
作者: 精彩的鸟    时间: 2023-7-29 15:29
套用数据源。没意义
谁有水电费单,给我发个
作者: Kumor    时间: 2023-7-29 17:52
zidoo 发表于 2023-7-28 17:02
不是太理解:第一种加入数组,问题是数组也是一个变量,而这里参数占位符值必须加引号,给数组名加上引号 ...

重定义数组(占位符参数名,,2)
重定义数组(占位符参数值,,2)
占位符参数名[1]="姓名"
占位符参数名[2]=“xxx”
占位符参数值[1]="张三"
占位符参数值[2]=到文本(取现行时间())
作者: 拼命的微笑    时间: 2023-7-31 00:04
感谢大神分享
作者: Silent    时间: 2023-7-31 14:14
没什么用了,用第三方库吧,比如锐浪!
作者: 53770zhang    时间: 2023-7-31 15:05
有点像论坛以前那个高级表格打印模块
作者: yl060814    时间: 2023-8-1 09:33
谢谢学习一下
作者: 韦家小易    时间: 2023-8-1 17:18
学习一下,感谢分享~
作者: 鼎诚    时间: 2023-8-1 20:02

作者: shuya1    时间: 2023-8-4 01:29
感谢发布原创作品,精易因你更精彩!
作者: haibaoyeye    时间: 2023-8-4 22:13
一直在研究这个、膜拜一下
作者: loop123    时间: 2023-8-6 13:14
感谢大神分享
作者: jslty327    时间: 2023-8-9 09:49
还是支持一下
作者: wis98    时间: 2023-8-9 15:26

还是支持一下
作者: fyqjfb    时间: 2023-8-14 12:58
学习一下!!!
作者: a8112456    时间: 2023-8-16 16:44
        支持开源~!感谢分享
作者: wdq108    时间: 2023-8-20 01:48

作者: badlwolf    时间: 2023-8-21 10:49
学习一下!!!!!!!!!!!!!!
作者: lxlm    时间: 2023-9-7 12:45
请问表数据超出部分如何分页打印,超出部分的数据也需要打印的
作者: Kumor    时间: 2023-9-7 15:16
lxlm 发表于 2023-9-7 12:45
请问表数据超出部分如何分页打印,超出部分的数据也需要打印的

在模板里留了几行空白,实际打印也是几行。如果要打印后续的行,需要再制作一个没有表头的模板,把剩余的数据传进去
作者: lxlm    时间: 2023-9-7 15:39
Kumor 发表于 2023-9-7 15:16
在模板里留了几行空白,实际打印也是几行。如果要打印后续的行,需要再制作一个没有表头的模板,把剩余的 ...

我在想能否做到 按照模板留置的行数填入,待数据填满后 ,在生成第二页 第三页....  数据依次填入,直至数据全部填入。假设 模板是可填入十条数据,当前数据有三十五条,在表格打印预览时 按照表格模板生成四页。
作者: Kumor    时间: 2023-9-7 19:17
lxlm 发表于 2023-9-7 15:39
我在想能否做到 按照模板留置的行数填入,待数据填满后 ,在生成第二页 第三页....  数据依次填入,直至 ...

需要自己写逻辑,一张表,两份模板,第一张填满后自动切换第二张模板。模块里没有这个功能
作者: sn123zyc    时间: 2023-9-9 11:33
        谢谢你的帮助~
作者: rbp2008    时间: 2023-9-15 15:43

学习一下!!!
作者: WSW120    时间: 2023-9-30 02:39
谢谢分享
作者: 清水凉茶    时间: 2023-10-1 08:52
感谢分享           
作者: Masonic    时间: 2023-10-4 02:19
        精彩文章希望继续努力
作者: xftjywx    时间: 2023-10-9 14:59
        小小心意,意思一下
作者: 学习是投资    时间: 2023-10-10 20:44
精彩文章希望继续努力
作者: 江山少主    时间: 2023-10-12 19:30
下载学习
作者: luweifox    时间: 2023-10-18 22:39
感谢分享
作者: Masonic    时间: 2023-10-29 01:15
支持开源~!感谢分享
作者: youzhi311    时间: 2023-11-7 00:51
下载学习
作者: lenye    时间: 2023-11-10 20:44
精彩文章希望继续努力
作者: df2013    时间: 2023-11-11 10:31
        小小心意,意思一下
作者: wmchina    时间: 2023-11-15 21:53
请问 需要做个新的模板怎么做 ?
作者: Kumor    时间: 2023-11-16 15:48
wmchina 发表于 2023-11-15 21:53
请问 需要做个新的模板怎么做 ?

调用 打印_模板配置,然后在弹出的图形界面里手动画模板
作者: wmchina    时间: 2023-11-17 08:18
好东西要
作者: wmchina    时间: 2023-11-17 08:19
好东西要
作者: xmnooo    时间: 2023-11-22 18:52
的点点滴滴
作者: wgqxj    时间: 2023-11-28 13:26
谢谢分享
作者: 蓝河笑月    时间: 2023-12-5 14:19
开源精神必须支持~
作者: SMTHU    时间: 2023-12-7 08:17
6666666666666666
作者: SMTHU    时间: 2023-12-7 08:17
6666666666666666
作者: raodafan    时间: 2023-12-8 18:26
正好 生产单需要打印
作者: sn123zyc    时间: 2023-12-19 15:06
        小小心意,意思一下
作者: 矜陌    时间: 2023-12-26 23:04
谢谢楼主学习学习
作者: 可爱的咚咚咚    时间: 2024-1-2 22:21
很方便,自己小改了一下。但是想请问下打印设置怎么写,网上也搜不到。例如调整边框和缩放比例之类的。
作者: 可爱的咚咚咚    时间: 2024-1-2 23:46
可爱的咚咚咚 发表于 2024-1-2 22:21
很方便,自己小改了一下。但是想请问下打印设置怎么写,网上也搜不到。例如调整边框和缩放比例之类的。{:7_ ...

打印设置少了一段
打印模板_数据源.置打印设置 (打印设置)
不然不生效
作者: xkbainga    时间: 2024-1-8 11:38
感谢大佬
作者: wswck7    时间: 2024-1-8 21:58
小小心意,意思一下
作者: mylo    时间: 2024-1-11 16:27
        小小心意,意思一下
作者: 换行符    时间: 2024-1-13 13:58
开源精神必须支持~
作者: 换行符    时间: 2024-1-13 13:59
开源精神必须支持~
作者: qzser1    时间: 2024-1-21 16:51
调用了数据源,看清楚了再下   
作者: junhai    时间: 2024-1-22 13:48
谢谢!!!!!!!!!!!!
作者: wffhhy    时间: 2024-2-18 14:41
好东西 支持下
作者: tsg2005    时间: 2024-2-21 10:50
正好需要这个打印功能。
作者: tsg2005    时间: 2024-2-21 10:50
感谢分享。
作者: q1224568236    时间: 2024-3-19 21:01
qzser1 发表于 2024-1-21 16:51
调用了数据源,看清楚了再下

为什么调用了数据源就要谨慎,纯小白,大佬




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4