6

ハロー、

Java を使用してテキスト ファイルで適切に書式設定されたレポートを生成する方法を探していました。

たとえば、次の形式でレポートを印刷する必要がある場合があります。

月次報告
A レポート名 ページ番号: 1
日付: YYYY-MM-DD              
あ
A カテゴリー 数量 価格
を -------------- ------------------ --------------- -----
B ペン 100 $100
B ペーパー 200 $400
あ
=====================================
B 合計 $500
=====================================

私は自分のプログラムを書いてみましたが、混乱していると感じています!!! それで、私が使用できる既存のライブラリがあるかどうか、またはそれを実装する良い方法があるかどうか疑問に思っています??

ところで、私は周りを見回して、私が欲しいものに似たライブラリを見つけました https://github.com/iNamik/Java-Text-Table-Formatter

他のオプションがあるかどうか疑問に思っています。助けてくれてありがとう!!

================================================== ==================

そのため、コードをクリーンアップするためにおそらく使用するサンプル コードを作成しました。

    StringBuilder sb = new StringBuilder();

    sb.append(String.format("%s %50s%n", "A", "Monthly Report"));
    sb.append(String.format("%s %48s%n", "A", "Report Name"));
    sb.append(String.format("%s %n", "A"));
    sb.append(String.format("%s %-20s %-20s %-20s%n", "A", "Category", "Quantity", "Price"));
    sb.append(String.format("%s %-20s %-20s %-20s%n", "A", "--------------", "--------------", "--------------"));
    sb.append(String.format("%s %-20s %-20s %-20s%n", "B", "Paper", 100, "$200"));

    System.out.println(sb.toString());

出力:

月次報告
レポート名
あ
A カテゴリー 数量 価格               
-------------- -------------- --------------      
B 紙 100 $200                


フォーマッタのint引数をハードコーディングせずに、中央に「レポート名」、右側に「ページ番号:」を作成するにはどうすればよいか考えています(つまり、50なしの%50sは可能ですか)

4

3 に答える 3

4

別の方法として、JDK ベースのソリューションを次に示します。

public static void main(String[] args) throws Exception {
    printRow("A", "Category", "Quantity", "Price");
    printRow("A", "--------------", "--------------", "--------------");
    printRow("B", "Paper", 100, 200);
}

private static void printRow(String c0, String c1, Object c2, Object c3 ) {
    System.out.printf("%s %-20s %-20s %-20s%n", c0, c1, String.valueOf(c2), c3 instanceof Integer ? "$" + c3 : c3);
}

出力

A Category             Quantity             Price               
A --------------       --------------       --------------      
B Paper                100                  $200                
于 2012-12-11T05:49:41.327 に答える
2

Apache Velocityは、テキストの書式設定またはテンプレート作成に適したツールです。プレーン テキスト、HTML、JSP、XML、SQL スクリプトなどで動作します。これについては、helloWorld のすばらしいチュートリアルがあります。

基本的な手順は次のとおりです。

  1. テキスト テンプレートを記述します。
  2. 速度エンジンを初期化します。
  3. 必要なコンテキストを挿入します。
  4. そしてそれをレンダリングします。

Latexのようなものはより複雑ですが、実際にはより強力です。レポート形式だけが必要な場合は、JasperReportsをご覧ください。

于 2012-12-11T07:15:39.627 に答える
0

アプリケーションの請求書を生成するために使用したiText Javaライブラリを試してください。

于 2012-12-11T03:45:33.113 に答える