2011-04-09 40 views
18

我需要將數據作爲表格輸出到控制檯。我想知道可能有一些Java庫會照顧在ASCII藝術中繪製表格,對齊單元格內的值等嗎?任何用於繪製ASCII表的Java庫?

╔══════╤═══════════╤════════╗ 
║ ID │ Name  │ Age ║ 
╠══════╪═══════════╪════════╣ 
║ 1 │ John  │ 24 ║ 
╟──────┼───────────┼────────╢ 
║ 2 │ Jeff  │ 19 ║ 
╟──────┼───────────┼────────╢ 
║ 3 │ Joel  │ 42 ║ 
╚══════╧═══════════╧════════╝ 
+4

如果你是認真的ASCII藝術的* ASCII *,那麼你只能使用'+','-'和'|'作爲畫線字符,而不是你在例子中使用的花哨字符。 – 2011-04-09 23:35:57

+0

我曾經在PHP中創建了這樣一個函數(用於格式化一個表格以用於電子郵件輸出)。它具有與輸出爲HTML或PDF的其他功能相同的界面。 – 2011-04-10 00:31:11

+0

這裏是[鏈接](http://svn.berlios.de/wsvn/aligilo/programo/iloj/iloj_kotizo_formatado.php) - TekstaKotizoFormatilo類。但它沒有太多評論,在世界語和我們自己的表格中,所以它可能無法幫助你。如果在這裏找不到合適的庫,我可能會考慮將它移植到Java。 – 2011-04-10 00:41:51

回答

6

這個工作很適合我:http://code.google.com/p/java-ascii-table/

String [] header = { 
     "User Name", 
     "Salary", "Designation", 
     "Address", "Lucky#" 
}; 

String[][] data = { 
     { "Ram", "2000", "Manager", "#99, Silk board", "1111" }, 
     { "Sri", "12000", "Developer", "BTM Layout", "22222" }, 
     { "Prasad", "42000", "Lead", "#66, Viaya Bank Layout", "333333" }, 
     { "Anu", "132000", "QA", "#22, Vizag", "4444444" }, 
     { "Sai", "62000", "Developer", "#3-3, Kakinada" }, 
     { "Venkat", "2000", "Manager" }, 
     { "Raj", "62000"}, 
     { "BTC"}, 
}; 

這使得如下:

 
+-----------+--------+-------------+------------------------+---------+ 
| User Name | Salary | Designation |   Address  | Lucky# | 
+-----------+--------+-------------+------------------------+---------+ 
|  Ram | 2000 |  Manager |  #99, Silk board | 1111 | 
|  Sri | 12000 | Developer |    BTM Layout | 22222 | 
| Prasad | 42000 |  Lead | #66, Viaya Bank Layout | 333333 | 
|  Anu | 132000 |   QA |    #22, Vizag | 4444444 | 
|  Sai | 62000 | Developer |   #3-3, Kakinada |   | 
| Venkat | 2000 |  Manager |      |   | 
|  Raj | 62000 |    |      |   | 
|  BTC |  |    |      |   | 
+-----------+--------+-------------+------------------------+---------+ 
2

這裏也是一個方便庫:https://github.com/JakeWharton/flip-tables

由於DOC說:

String[] headers = { "Test", "Header" }; 
String[][] data = { 
    { "Foo", "Bar" }, 
    { "Kit", "Kat" }, 
}; 
System.out.println(FlipTable.of(headers, data)); 

應具有以下的輸出:

╔══════╤════════╗ 
║ Test │ Header ║ 
╠══════╪════════╣  
║ Foo │ Bar ║ 
╟──────┼────────╢ 
║ Kit │ Kat ║ 
╚══════╧════════╝