こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CSVファイルの、列だけ取得したい

FileReader filereader = new FileReader(FileName);
BufferedReader bufferedreader = new BufferedReader(filereader);
String line;
int i = 0;
while((line = bufferedreader.readLine()) != null) {
int j = 0;
StringTokenizer stringTokenizerTest = new StringTokenizer(line, ",");
while(stringTokenizerTest.hasMoreTokens()) {
item[j][i]=stringTokenizerTest.nextToken().toString();
j++;
}
i++;
}
filereader.close();

このような記述で、CSVの中身を全て取得することは出来るのですが、
ある一列だけ取得する方法がわかりません。
具体的には、コンボボックスにCSVのある一列だけ表示させたいです。
(その後、重複なしの値のみにフィルタリングしたい)
現在は苦し紛れに、
combo1.setModel(new DefaultComboBoxModel(new String[] { item[1][3], item[1][4], item[1][5], item[1][6], item[1][7], item[1][8], item[1][9], }));
などと、配列を使ってピンポイントで値を取得していますが
これでは使えないので・・
アドバイスよろしくお願いいたします。

投稿日時 - 2009-12-18 16:00:31

QNo.5531491

すぐに回答ほしいです

質問者が選んだベストアンサー

とりあえず
CSVを配列itemに格納するのは避けられないわ。

格納さえしてしまえば列だけ引っこ抜くのは簡単よね。
for文で
item[1][y]
をStringの配列に格納してあげるだけなんだから。

私ならString[] getRowData(int y)とか
そんなメソッド作って処理させるわ。

投稿日時 - 2009-12-18 20:11:20

お礼

ありがとうございます。
なるほど配列の片方を固定、片方を変数にするのですね。

投稿日時 - 2009-12-20 09:56:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

どうしても1レコードのなかの一部分を取得
という流れになってしまうわ。
固定長ならRandomAccessFileを利用する手もあるけど
普通に読み込んだほうが早いわね。

ちなみにStringTokenizerじゃなくて
String#splitを使うと
コードがシンプルになって良いわよ。

投稿日時 - 2009-12-18 16:42:39

お礼

ありがとうございます。
やはりCSVの中身全体か、出来ても一行分、一セル分の表示ということに
なってしまうのでしょうか。列の抜き出しはどうしても出来ないんです
かね。全く違う記述でも良いのですが・・

投稿日時 - 2009-12-18 16:52:09

あなたにオススメの質問