Jasper reports 导出为Excel格式:单元格类型“;“一般”;数字变成了科学符号

Jasper reports 导出为Excel格式:单元格类型“;“一般”;数字变成了科学符号,jasper-reports,export-to-excel,number-formatting,Jasper Reports,Export To Excel,Number Formatting,我创建了一个Jrxml来生成excel输出。iReport中数据类型为“String”的文本字段在生成的excel输出中以“General”的单元格格式显示。 当数字大于12位时,它就变成了科学记数法。例如99999999869变为1E+12。我需要单元格格式为“文本”或“数字”。 我已经试过了 <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/> 但它不起作用。 还尝试

我创建了一个Jrxml来生成excel输出。iReport中数据类型为“String”的文本字段在生成的excel输出中以“General”的单元格格式显示。

当数字大于12位时,它就变成了科学记数法。例如99999999869变为
1E+12
。我需要单元格格式为“文本”或“数字”。

我已经试过了

<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>

但它不起作用。
还尝试了
pattern=“@”
pattern=“0.00”
,但都不起作用。


JasperReports版本在大多数情况下使用5.6.1和org.grails.plugins:jasper 1.11.0,在报告jrxml let excel中添加以下属性以检测单元格类型:

<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>

但看起来你已经试过了。在这种情况下,您就没有什么可以尝试的肮脏解决方案了。您可以看到,Excel中的默认数字格式是通用的,因此单元格中最多只能显示11位数字,此问题适用于Microsoft Office Excel 2010、Excel 2007和Excel 2003。获取更高版本的Microsoft Excel会使此问题无效,或尝试以XLSX格式导出。或者,您可以使用其他excel阅读器,如Open Office

当您导出到Excel时,您将失去对单元格格式的控制,但作为一种解决方法,请尝试在字符前添加前缀以强制单元格类型为文本,尝试在数字文本字段前面添加单引号('),如
,或尝试在数字之间插入空格。这仍然是一种骇客,但可能会为你工作


否则,最后一个可能的修复方法是从启动报告的java代码进入Excel。您可以通过poi jar访问行、列和单元格级别的项目。

我已尝试使用属性
-OP已尝试使用此属性我正在尝试导出为xlsx格式,但在打开xlsx文件时遇到错误。“excel无法打开文件,因为文件格式或文件扩展名无效。请验证文件是否已损坏&文件扩展名是否与文件格式匹配。”。