2009-05-27 123 views
6

我想從任意數據集對象模型中生成格式良好的表格文本。有沒有一個好的庫在Java中執行此操作?如何在Java中將表格數據格式化爲文本?

具體來說,我希望格式化爲像命令行數據管理工具(如CLI的mysql)的輸出。例如:

+---------+--------------+------+-----+---------+-------+ 
| Field | Type   | Null | Key | Default | Extra | 
+---------+--------------+------+-----+---------+-------+ 
| name | varchar(100) | YES |  | NULL |  | 
| release | year(4)  | YES |  | NULL |  | 
| studio | varchar(50) | YES |  | NULL |  | 
| review | varchar(50) | YES |  | NULL |  | 
| gross | int(11)  | YES |  | NULL |  | 
+---------+--------------+------+-----+---------+-------+ 

一個主要的挑戰是在我開始遍歷數據之前,我不會自動知道最大列寬。此外,還有很多邊緣情況,例如處理非常大的值長度和大量的行和列。

如果我必須自己構建這個,我想我會利用String.format,並且我需要在開始輸出之前預先分析完整的數據集。儘管這是一個非常低的編碼水平,所以我很樂意找到一個已經解決了這個問題的好庫。

回答

7

檢出TableFormatter:它似乎做你想要格式化表格數據。源代碼也可用。您可以使用流暢的界面方法將行和單元格附加到表中。示例如下:

TableFormatter tf = new SimpleTableFormatter(true) // true = show border 
     .nextRow() 
      .nextCell() 
       .addLine("Field") 
      .nextCell() 
       .addLine("Type") 

因此,它會以正確的格式建立單元格並相應地調整空格。它也將讓你的細胞(中心,頂部,底部)

+0

感謝喬恩,這看起來像* *究竟什麼我正在尋找! 8-] – dirtyvagabond 2009-05-28 16:33:32

3

trac.inamik.com/trac/jtable_format是在GPL許可證下,不適合在某些情況下,內做文本的基本取向。

另一個選項(Apache 2的許可證):

http://sourceforge.net/projects/texttablefmt/

+1

看起來像iNamik的許可證已經改爲雙重許可證 - MIT和GPL – 2013-03-06 19:41:27

1

對於那些有興趣,I have forked TableFormatter(它是雙許可證GPL和MIT),使其仿製藥友好,並刪除所有的編譯警告。

請注意,我使用Java 7鑽石運算符,因此爲了使其與Java 6兼容,需要在列表聲明中添加類型。

相關問題