Как отформатировать табличные данные как текст в Java? - PullRequest
6 голосов
/ 27 мая 2009

Я хотел бы создать красиво отформатированный табличный текст из произвольных объектных моделей набора данных. Есть ли хорошая библиотека для этого на 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, и мне нужно было бы предварительно проанализировать полный набор данных перед началом вывода. Это очень низкий уровень кодирования, поэтому я хотел бы найти хорошую библиотеку, которая уже решила эту проблему.

Ответы [ 3 ]

7 голосов
/ 27 мая 2009

Извлечение TableFormatter : похоже, вы делаете то, что хотите для форматирования табличных данных. Исходный код также доступен. Вы можете добавлять строки и ячейки в таблицу, используя гибкий интерфейс. Вот пример:

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

Таким образом, он будет строить ячейки в правильном формате и соответственно корректировать пробелы. Это также позволит вам выполнить базовое выравнивание текста внутри ячейки (центр, верх, низ)

3 голосов
/ 19 января 2010

trac.inamik.com / trac / jtable_format находится под лицензией GPL, в некоторых случаях не подходит.

Другой вариант (лицензия Apache 2):

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

1 голос
/ 07 июня 2013

Для тех, кто заинтересован, Я разбудил TableFormatter (что означает двойную лицензию GPL и MIT), чтобы сделать его удобным для генериков и удалить все предупреждения компиляции.

Обратите внимание, что я использую оператор Java 7 diamond, поэтому для его совместимости с Java 6 потребуется добавить типы в объявлениях списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...