2009-05-27 79 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兼容,需要在列表声明中添加类型。

相关问题