根据Displaytag 1.2文档,ExportView
用于输出Excel文件。
但实际上,源代码显示,整个ExcelModel结构只是一个由字符串组成的普通数据bean。使用ExcelView
输出XLS的结果是以下纯文本输出(不是有效的XLS(,
"Agreement Category" "Approving Official" "Second Level Approving Official"
"Regular" "John Smith" "Test"
事实上,ExcelView
模型包只是一组基于字符串的类,就像POJO bean、
org.displaytag.model.Column
org.displaytag.model.HeaderCell
...
我知道Displaytag还有一个完全不同的渲染器org.displaytag.export.excel.DefaultHssfExportView
,它使用HSSF来编写XLS文件。该渲染器确实生成了一个有效的Excel文件。(它在JARdisplaytag-export-poi-1.2.JAR中。(
那么ExcelView
的目的是什么呢?它是最终的渲染器,还是只是某种类型的界面渲染器?它是否假设有更多的实现?如果它实际上不输出Excel,只是一个字符串列表,为什么要称它为ExcelView
?我们应该对所有Excel导出使用DefaultHssfExportView
吗?
DisplayTag是一个糟糕且支持率很低的库,但以下是我所能找到的:
-
它误导性地称
org.displaytag.export.ExcelView
只是一个引号括起来的字符串渲染器(他们称之为"ascii格式,制表符分隔"(至少有一个用户认为它是CSV,但事实并非如此,因为没有逗号(CSV需要逗号——这里只有空格和引号:"test"、"test2"等( -
要真正输出一个真正的Excel文件,您需要:
a(displaytag.properties中的export.excel.class=org.displaytag.export.excel.DefaultHssfExportView
b(带有:displaytag-eport-poi-1.2.jar(包含DefaultHssfExportView
(,
c( 带有:poi-3.2-FINAL.jar这非常重要。您不能将更高的POI版本与DefaultHssfExportView
一起使用。
这会输出一个好的Excel文件,但还有一个问题:仅限当前页面(而不是完整列表(。已经提出了各种想法来获得完整的列表,例如使用不同的名为org.displaytag.export.excel.ExcelHssfView
的渲染器。这个其他的渲染器在display-export-poi-1.2.jar中也可用,但由于某种原因,我在上面得到了一个ClassDefNotFound,它无法使用。只有DefaultHssfExportView
渲染器被找到、实例化并工作。
所以现在我得到了一个有效的Excel文件,但只有一个页面集,而不是完整集。渲染的XLS中没有完整集的解决方案。
我能够使用获得完整的二进制Excel导出
displaytag 1.2和displaytag导出poi 1.2
例如在build.gradle
:中
implementation 'displaytag:displaytag:1.2'
implementation 'displaytag:displaytag-export-poi:1.2'
并在CCD_ 15中添加以下内容:
export.excel.class=org.displaytag.export.excel.ExcelHssfView