【问题标题】:How to format tabular data as text in Java?如何在 Java 中将表格数据格式化为文本?
【发布时间】:2009-05-27 03:10:35
【问题描述】:

我想从任意数据集对象模型中生成格式良好的表格文本。在 Java 中是否有一个很好的库可以做到这一点?

具体来说,我想要的输出格式类似于命令行数据管理工具,例如 mysql 的 CLI。示例:

+---------+--------------+------+-----+---------+-------+
| 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,并且我需要在开始输出之前预先分析完整的数据集。虽然这是一个非常低级的编码,所以我很想找到一个已经解决这个问题的好库。

【问题讨论】:

    标签: java text formatting


    【解决方案1】:

    查看TableFormatter:它似乎可以执行您想要的格式化表格数据的操作。源代码也可用。您可以使用流畅的界面方法将行和单元格附加到表中。下面是一个例子:

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

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

    【讨论】:

    • 感谢乔恩,这看起来正是我正在寻找的! 8-]
    【解决方案2】:

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

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

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

    【讨论】:

    • 看起来 iNamik 的许可证已更改为双重许可证 - MIT 和 GPL
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多