如何使用JasperReports导出ODS格式文件时移除网格线
JasperReports导出ODS格式移除网格线解决方案
失效原因说明
你尝试调用的SimpleOdsReportConfiguration.setShowGridLines(false)仅作用于JasperReports生成的报表内容自带的网格线,不会修改ODS文件本身的视图属性,因此无法隐藏ODS阅读器默认展示的页面网格线。
可落地实现方案
方案1:内置属性配置(适用JasperReports 6.10及以上版本)
JasperReports已内置ODS网格线控制的专属配置,直接在导出逻辑中添加对应属性即可生效,代码示例如下:
JROdsExporter exporter = new JROdsExporter(); SimpleOdsReportConfiguration config = new SimpleOdsReportConfiguration(); // 配置ODS文档默认隐藏视图网格线 config.setProperty("net.sf.jasperreports.export.ods.show.gridlines", false); // 保留原有配置隐藏报表内容自带的网格线 config.setShowGridLines(false); exporter.setConfiguration(config); exporter.exportReport();
如果需要全局生效,也可以直接在项目的jasperreports.properties配置文件中添加以下行:
net.sf.jasperreports.export.ods.show.gridlines=false
方案2:低版本兼容方案(适用JasperReports 6.10以下版本)
如果使用的版本没有内置该配置,可以通过修改导出后ODS文件的元数据实现效果:
- ODS本质是ZIP格式压缩包,先解压导出的ODS文件
- 找到压缩包内的
styles.xml文件,定位到<table:table-view>节点 - 给该节点新增属性
table:show-grid="false" - 把所有文件重新压缩为ODS后缀的文件即可
效果验证
修改后用LibreOffice Calc等ODS阅读器打开文件,默认不会显示背景网格线,和Excel导出的实现效果完全一致。
内容的提问来源于stack exchange,提问作者Paco Abato
相关产品推荐
相关产品推荐

