当前位置: 首页 > news >正文

报表reportviewer控件使用时,单行文本过长的解决办法

     最近在做winform的报表,客户需要把纸质模板可以在系统中打印。一开始设计,认为vs自带控件reportviewer可以解决,但在测试过程中发现:若单行文本过长,报表自动分页,弊端是分页后,第一页文本框底部边框和第二页文本框顶端边框无法显示,由于客户是政府机关,要求严格,只好解决这个问题。

在解决过程中也是想各种办法

第一种,判断是否分页,分页后,该文本框是否存在本页,若存在,则在相应分页底部和顶端划线,可是搜索属性框,并没有这些属性值,放弃。

第二种,主体加边框,与矩阵重合,矩阵边框不要,使用主体边框,用这种巧妙方式来解决分页带来的问题,它的弊端是,若分页的第二页不满一张,文本框底部边框和主体底部边框会间隔一片空白,不是很美观,所以放弃。

既然自带控件想不到好的解决思路,不如换一种方式。现在流行操作office,已达到我们的目的。我首选了excel模板,把模板做到excel中,根据excel的单元格位置,给单元格或者区域赋值。由于模板复杂,会有合并单元格的情况,excel对于单元格有自带对于行高可以自增长,但对于合并的单元格无效,需要自己写宏,另外,每行的行高默认设置为0到409,对于不确定文本长度不好控制,需要计算文本长度,除以每行字数,在计算最高行高可以容下几行,得出文本需要的行高,最后在向区域内插入行,报表多的情况下,工作任务量增大.

于是,觉得换成word来解决。word的优点是,当分页时,word会自动补充边框,那么在调用word的打印预览功能,跟真实报表一样,客户对那种报表没有要求,只要打印正常就可以,终于找到合适的解决方式。网上有很多向word内写入数据的方法,使用模板,插入标签,赋值即可。那么,它并不是很完美,在打印预览时,会打开文档,关闭打印预览,模板文档无法同时关闭,模板已经写入数据,如果不同时关闭,用户一旦错误的保存了数据,那模板改变,之后的数据完全不对,怎么解决?思路肯定是同时关闭。怎么判断打印预览已经关闭,网上搜索一下,认为应当使用三方控件,可以直接调用word的各种方法,本人不太喜欢过多使用第三方,部署时各种dll需要准备好。

最终找到一种方式,try,catch,finally完美解决,在finally里写循环,一旦打印预览打开,循环执行空方法,关闭后跳出循环,跳出循环在关闭文档,关闭进程,不会提示,进程正在使用。

这样就可以解决,有好的方法可以推荐,交流下哦?

转载于:https://www.cnblogs.com/yunangel/p/6621731.html

相关文章:

  • 【VB超简单入门】五、基本输出输入
  • WordPress基础知识:条件判断标签及用法大全
  • EF Code-First 学习之旅 Code First Conventions
  • Excel从零整理
  • 线段树建图
  • C#编程(七十六)----------使用指针实现基于栈的高性能数组
  • CSS-样式表的分类以及选择器的分类
  • childNodes与children
  • 发现一个很N且免费的html5拓扑图 关系图 生成组件
  • I2S
  • Oracle11g表空间导入dmp数据
  • Ambari里如何删除某指定的服务(图文详解)
  • CP-ABE ToolKit 安装笔记
  • js数组去重的三种常用方法总结
  • DPDK QoS之分层调度器
  • 〔开发系列〕一次关于小程序开发的深度总结
  • javascript 哈希表
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • MQ框架的比较
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Service Worker
  • 关于extract.autodesk.io的一些说明
  • 一些css基础学习笔记
  • Hibernate主键生成策略及选择
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​iOS安全加固方法及实现
  • ​水经微图Web1.5.0版即将上线
  • # centos7下FFmpeg环境部署记录
  • #NOIP 2014#Day.2 T3 解方程
  • $(function(){})与(function($){....})(jQuery)的区别
  • (13)Hive调优——动态分区导致的小文件问题
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)Linux——Linux常用指令
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .gitignore文件---让git自动忽略指定文件
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net 6.0 处理跨域的方式
  • .NET CLR基本术语
  • .NET CORE Aws S3 使用
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net开发引用程序集提示没有强名称的解决办法
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @property括号内属性讲解
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [Foreman]解决Unable to find internal system admin account
  • [hdu4622 Reincarnation]后缀数组
  • [Java] IDEA Scala环境搭建
  • [LaTex]arXiv投稿攻略——jpg/png转pdf