Jasper报告Excel-CSV导出:阻止执行excel公式

时间:2017-07-13 17:47:08

标签: jasper-reports export-to-excel

我正在使用Jasper Report API 4.5(如果此解决方案需要,可以随时更新)。使用Jasper Report我将报告导出为HTML,Excel,CSV和PDF。我遇到的情况是,如果数据具有有效的excel公式,那么在将数据导出到Excel和CSV并将文件查看到MS Excel时,它会执行excel公式。这会导致安全问题,因为某些数据具有excel公式,可以在本地计算机上执行某些操作,然后可能会损害系统。

我们无法在插入时验证数据,这样做可能会解决问题。但是目前没有数据验证可以防止插入excel公式。我的首选解决方案是从Jasper Report管理。

我的问题是,是否有任何机制或导出参数可以阻止excel公式执行?或者有没有办法按原样打印数据并忽略excel公式?

1 个答案:

答案 0 :(得分:0)

对于Excel导出:

我们可以使用 Apache POI SmartXLS API在外部将单元格类型设置为Text,以便从数据库中获得相同的结果。

对于Apache POI ,我们可以将单元格格式设置为"@",这是来自Apache POI javadoc的链接。

对于SmartXLS ,我们可以设置工作簿范围样式以将格式类型设置为Text,代码片段如下所示:

RangeStyle rangeStyle = workBook.getRangeStyle(1, 0, 50, 0);
rangeStyle.setCustomFormat("@");

对于CSV导出:

升级的JasperReport 6.3。有一个功能可以将机箱添加到csv字段。默认情况下,excel将单引号(' )作为字段附件,因此可以将该字段作为公式执行。为避免这种情况,我们可以将机箱字段设置为(`)。

SimpleCsvExporterConfiguration reportExportConf = new SimpleCsvExporterConfiguration();

reportExportConf.setFieldEnclosure("`");
reportExportConf.setForceFieldEnclosure(true);