如何将表格数据格式化为Java中的文本?

时间:2009-05-27 03:10:35

标签: java text formatting

我想从任意数据集对象模型生成格式良好的表格文本。在Java中有一个很好的库吗?

具体来说,我希望输出格式化为命令行数据管理工具,例如CLI for 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,并且我需要在开始输出之前预分析完整的数据集。这是一个非常低级别的编码,所以我很想找到一个已经解决了这个问题的好图书馆。

3 个答案:

答案 0 :(得分:7)

结帐TableFormatter:它似乎可以执行格式化表格数据的操作。源代码也可用。您可以使用流畅的接口方法将行和单元格附加到表中。一个例子如下:

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

因此它将以正确的格式构建单元格并相应地调整空白。它还允许您在单元格(中心,顶部,底部)中进行文本的基本对齐

答案 1 :(得分:3)

trac.inamik.com/trac/jtable_format受GPL许可,在某些情况下不合适。

另一个选项(Apache 2许可证):

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

答案 2 :(得分:1)

对于那些感兴趣的人,I have forked TableFormatter(这是双重许可证GPL和麻省理工学院)使其对泛型友好并删除所有编译警告。

请注意,我使用Java 7菱形运算符,以使其与Java 6兼容,需要在列表声明中添加类型。