CSVファイルをJTableで表示する

結城浩

*

目次

はじめに

CSVViewerは、 CSVファイルをJTableで表示する簡単なビューアです。 java.swing.JTableの小さなサンプルプログラムと考えてください。

コンパイル&実行は、

    javac CSVViewer.java
    java CSVViewer CSVファイル名

のようにします(J2SE 1.4以降必須)。

例えば、

    java CSVViewer sample.csv

とすると、sample.csvというファイルを表示します。

ソースコード

CSVの切り分けには正規表現パッケージjava.util.regexを使っています。

/* CSVViewer.java */
import java.io.*;
import java.awt.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.table.*;

public class CSVViewer extends JFrame {
    private final String _filename;
    private final JTable _table = new JTable();
    private final JScrollPane _pane = new JScrollPane(_table);
    public CSVViewer(String filename) throws IOException {
        super(filename + " - CSVViewer");
        _filename = filename;
        readin();
        getContentPane().add(_pane);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        show();
    }
    private void readin() {
        Pattern pattern = Pattern.compile(",");
        DefaultTableModel model = (DefaultTableModel)_table.getModel();
        try {
            final BufferedReader reader = new BufferedReader(new FileReader(_filename));
            String line;
            for (int row = 0; (line = reader.readLine()) != null; row++) {
                String[] items = pattern.split(line);
                model.setRowCount(row + 1);
                for (int column = 0; column < items.length; column++) {
                    if (model.getColumnCount() <= column) {
                        model.setColumnCount(column + 1);
                    }
                    _table.setValueAt(items[column], row, column);
                }
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws Exception {
        if (args.length != 1) {
            System.out.println("Usage: java CSVViewer file.csv");
            System.exit(0);
        }
        new CSVViewer(args[0]);
    }
}

サンプルCSVファイル

サンプルCSVファイル(sample.csv)です。

2002,ISBN4797321261,結城浩のPerlクイズ
2002,ISBN4797319127,Java言語で学ぶデザインパターン入門 マルチスレッド編
2001,ISBN4797316462,Java言語で学ぶデザインパターン入門
2001,ISBN4797312211,Perl言語プログラミングレッスン 入門編
1999,ISBN4797308036,Java言語プログラミングレッスン(上巻)
1999,ISBN4797310103,Java言語プログラミングレッスン(下巻)
1998,ISBN479730507X,Perlで作るCGI入門 基礎編
1998,ISBN4797305819,Perlで作るCGI入門 応用編
1998,ISBN4797307579,改訂第2版 C言語プログラミングレッスン 入門編
1995,ISBN489052519X,C言語プログラミングレッスン 文法編
1996,ISBN4890528687,新版 C言語プログラミングのエッセンス

実行した様子

*

更新履歴

ぜひ、感想をお送りください

あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

あなたの名前: メール:
学年・職業など: 年齢: 男性女性
(上の情報は、いずれも未記入でかまいません)

お手数ですが、以下の問いに答えてから送信してください(迷惑書き込み防止のため)。
今年は西暦何年ですか?

何かの理由でうまく送れない場合にはメールhyuki dot mail at hyuki dot comあてにお願いします。

豊かな人生のための四つの法則