表格轉換架構

「表格描述定義」可以針對 JavaBean / Map 形式資料來源,以相同的 Table-Metadata 轉換為不同格式(PDF/Excel/CSV)輸出,方便變換報表格式時處理。

原始資料 (Data Model)

  • 將被轉換為表格的原始資料,應為 Iterable 類型,每一筆資料列的內容,存在一個類別為 T 的物件中。

表格描述定義(TableMetadata)

  • 表格描述基本定義,是一對一設定直欄標頭與資料來源對應。如下例增加一個「年度」欄位,其資料值「new BeanProperty("text1")」表示由 java bean 的 "text1" 屬性取得內容。
final TreeTableMetadata metadata = new TreeTableMetadata ();
metadata.append("年度", new BeanProperty("text1"));
  • 底層升版到 JDK8 後,對 DocumentGenerator 介面新增 dataSource(...) 相關 default 函式。主要用於在不同的測試模式下,可改為輸出來源描述資訊,也簡化常見的用法。
CellDataSource dataSource(String)       // 同 new BeanProperty(...)
CellDataSource[] dataSources(String...) // 

CellDataSource dataSource(BiFunction<CellDataSource, CellDataSource, ? extends CellDataSource>, String, String)
CellDataSource dataSource(Function<CellDataSource, ? extends CellDataSource>, CellDataSource)
CellDataSource dataSource(Function<CellDataSource, ? extends CellDataSource>, String)
CellDataSource dataSource(Function<CellDataSource[], ? extends CellDataSource>, CellDataSource...)
CellDataSource dataSource(Function<CellDataSource[], ? extends CellDataSource>, String...)
  • 一些新增欄位定義的函式如下,後續章節會再逐一介紹。
// 基本新增用法
append(String title)
append(String title, CellDataSource source)
append(String title, float widthWeight)
append(String title, CellDataSource source, float widthWeight)

// 新增後,以 Consumer 操作所加入的欄位描述資訊
append(String title, Consumer<C>)
append(String title, CellDataSource source, float widthWeight, Consumer<C>)

// 以 ColumnDefine 介面新增欄位,通常用於使用 ENUM 定義固定欄位選項。
append(ColumnDefine)

// 加入無標題欄位
append(CellDataSource source, float widthWeight)
  • 若不同資料列間,要利用某些欄位做群集設定,可使用 GroupingInfo createGroupingInfo(...) 及其相關類別處理。
  • 另外,TableMetadata也可以附加 Band 資訊,以定義轉換表格時,所需顯示的額外區塊。

表格轉換器(TableTransfer)

有原始資料,有表格描述定義,就可以選用不同的表格轉換器轉換為表格輸出。

最基本的轉換器是以文件格式分類:PDFTableTransfer、ExcelTableTransfer、CSVTableTransfer,把表格內容轉為各自格式的最適化輸出。如 PDF 遇到寬表格可做分頁處理,CSV 可把巢狀表格扁平化處理。

但也可以為特殊的轉換需求,選用其它的表格轉換器,如:

  • PDFDuplicatedTableTransfer

    • 特殊資料清冊,不支援統計群集功能,將直列表格轉成多欄依序輸出。
  • 客製化 TableTransfer

    • 例如遇到群集資料時,要特別做換頁處理或其它格式輸出。

results matching ""

    No results matching ""