2009-05-27 11 views
6

私は任意のデータセットオブジェクトモデルからきれいにフォーマットされた表形式のテキストを生成したいと思います。 Javaでこれを行うには良いライブラリがありますか?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を使用すると思いますが、出力を開始する前に完全なデータセットを事前に解析する必要があります。それはコーディングのレベルが非常に低いので、私はすでにこの問題を解決した良いライブラリを見つけることが大好きです。

答えて

7

チェックアウトTableFormatter:表形式データの書式設定に適しているようです。ソースコードも利用可能です。流暢なインターフェイスのアプローチを使用して、テーブルに行とセルを追加することができます。次に例を示します。

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

したがって、適切な形式でセルを構築し、それに応じて空白を調整します。また、セル(中央、上、下)内のテキストの基本的な配置を行うことができます

+0

ありがとうございましたJon、これは*ちょうど私が探していたものです! 8-] – dirtyvagabond

3

trac.inamik.com/trac/jtable_formatはGPLライセンスの下にあり、場合によっては不適切です。

別のオプション(Apache 2のライセンス):興味のある方のために

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

+1

iNamikのライセンスがデュアルライセンス(MITとGPL)に変更されたようです –

1

、それはジェネリックフレンドリーにすると、すべてのコンパイル警告を削除する(デュアルライセンスGPLとMITがある)I have forked TableFormatter

私はJava 7ダイヤモンド演算子を使用しているので、Java 6と互換性を持たせるために、リスト宣言で型を追加する必要があります。

関連する問題