如何在Excel中实现三联类模板?
  jEawyGT1dJk5 2023年11月25日 20 0


前言

在一些报表打印应用场景中,会有类似于如下图所示的排版格式:

如何在Excel中实现三联类模板?_字段

一般情况下将这种类型的需求称为“三联”类型,这种三联需求的关键点在于以下两点:

1. 部分单元格需要同时绑定多个字段,并将其组合为一段文字,比如上图中的义务教育入学报道单和义务教育入学通知书下方的两段话,它们包含了日期信息和学校名称信息。

2. 其中一联的部分内容的高度是可变的,比方说上图中,第二、三联中间的那一段话的长度是不确定的,因此它所占据的单元格行数也是不确定的。

下面小编就将为分别为大家介绍如何实现上面两点需求:

1. 同一个单元格绑定多个字段

以上述应用场景为例,小编分别用黄s色和蓝色的背景色表示义务教育入学报道单和义务教育入学通知书下方的两段话,它们都绑定了多个字段。

如何在Excel中实现三联类模板?_字段_02

使用代码实现将数据对象绑定在一个单元格内:

如何在Excel中实现三联类模板?_字段_03

同时,使用自定义单元格来实现文本的拼接:

如何在Excel中实现三联类模板?_开发平台_04

完整代码可以点击这里:https://docs.grapecity.com.cn/spreadjs/practice/data-binding/cell-binding-object

2. 改变第二、三联的单元格,并不影响第一联的内容。

这里的思路不是插入新的行,而是将第三联下方的单元格向下移动,于是这里便需要做两件事,第一,记录需要向下移动的区域;第二,计算要向下移动几行。

关于第一点,可以选中区域,并使用上方的按钮来设置需要向下移动的区域,将其记录在tag中:

如何在Excel中实现三联类模板?_字段_05

代码如下:

如何在Excel中实现三联类模板?_开发平台_06

而第二点,则稍微有点麻烦,因为真实的文本需要几行单元格展示,不仅和文字的长度有关,还与单元格的宽度(考虑到单元格是合并的,这里需要分开计算并相加)、字体的大小都有关系:

如何在Excel中实现三联类模板?_字段_07

计算文本长度时,使用canvas的measureText方法即可,需要将canvas的字体设置为和表单中一致,文本存在自定义单元格的实例中,直接获取即可:

如何在Excel中实现三联类模板?_开发者_08

最后,使用计算出来的diff,扩大单元格合并的范围,并向下移动对应行数即可:

如何在Excel中实现三联类模板?_开发平台_09

这里要先移除合并单元格,再重新添加一次。

至此,核心的功能就完成了。

总结

以上就是在Excel中实现横向排版/三联类的模板的方法介绍。如果您想了解完整代码,可以访问下列Gitee/Github地址:

https://gitee.com/GrapeCity/typesetting_triple

https://github.com/GrapeCityXA/typesetting_triple

无论是初学者还是有经验的专业人士,都将为您提供有价值的指导和帮助。


作者:葡萄城技术开发团队


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: python 简笔画 下一篇: python 对象不为空
  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
jEawyGT1dJk5