Displaytag 的 ExcelView 是否有效?获取非 Excel 纯字符串输出

Does Displaytag's ExcelView even work? Getting Non-Excel output of plain strings

根据Displaytag 1.2 documentation,提供ExportView输出Excel个文件。

但实际上,源代码显示整个 Excel 模型结构只是一个普通的字符串数据 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 文件。 (它在 JAR displaytag-export-poi-1.2.jar 中。)

那么ExcelView的目的是什么?它是最终渲染器,还是某种界面渲染器?它是否需要更多的实施?如果它实际上不输出 Excel,只是一个 String 列表,为什么称它为 ExcelView?我们是否应该对所有 Excel 出口使用 DefaultHssfExportView

DisplayTag 是一个糟糕且缺乏支持的库,但这是我能够找到的:

  1. 它误称为 org.displaytag.export.ExcelView 的只是一个 quote-enclosed 字符串渲染器(它们 call 它是“ascii 格式,制表符分隔”) 至少一个用户 thought 它是 CSV,但它不是,因为没有逗号(CSV 需要逗号——这里只有空格和引号:“test”、“test2”等)。

  2. 要实际输出一个真正的 Excel 文件你需要:

一个) export.excel.class=org.displaytag.export.excel.DefaultHssfExportViewdisplaytag.properties

b) 其中:displaytag-export-poi-1.2.jar(这包含 DefaultHssfExportView),

c) with: poi-3.2-FINAL.jar 这个很重要。你 can't use a higher POI 版本 DefaultHssfExportView.

这会输出一个很好的 Excel 文件,但还有一个问题:只有当前的 Page(不是完整列表)。已经提出了各种想法来获得完整的列表,例如using a different renderer called org.displaytag.export.excel.ExcelHssfViewdisplay-export-poi-1.2.jar 中也提供了此其他渲染器,但出于某种原因我在其上获得了 ClassDefNotFound,但无法使用。只有 DefaultHssfExportView 渲染器被发现、实例化并工作。

所以现在我得到了一个有效的 Excel 文件,但是有一个 Page-only 集而不是完整的集。渲染的XLS中没有全套解决方案

我能够通过以下方式获得完整的二进制 Excel 导出:

显示标签 1.2 和 displaytag-export-poi1.2

例如在 build.gradle:

    implementation 'displaytag:displaytag:1.2'
    implementation 'displaytag:displaytag-export-poi:1.2'

并将以下内容添加到 displaytag.properties

export.excel.class=org.displaytag.export.excel.ExcelHssfView