• ベストアンサー

csvファイルのデータ列数を取得したいのですがうまくいきません。

csvファイルのデータ列数を取得したいのですがうまくいきません。 VB2010、StreamReaderでファイルを読み込み、 以下のコードで列数を取得してみたのですが、 数値変数の「列数」に7が入ります。 実際は3列しかありません。 SR.ReadLine()で読み込んだデータ右端部にいらないカンマがいくつか並んでいました。 列数 = UBound(Split(SR.ReadLine(), ",")) どう修正したらよいでしょうか。 また、csvファイルのデータ列数を簡単に取得する方法はないでしょうか? 教えてください。 お手数をおかけしますがよろしくお願いします。

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

いらないカンマではなく、値が無い場合にはカンマが連続します。 列が1の場合にはカンマはないですよね。 つまり、CSVではカンマの数+1が列数になります。

ddtqp
質問者

お礼

回答ありがとうございます。 項目列数にあわせているので、データが3列しかなくても、うしろにカンマがついているんですね。 わかりました。

ddtqp
質問者

補足

あれこれ調べたのですが、 とりあえずiniファイルというものを作成して、データ開始行をデフォルトで入力するようにしました。 For~Nextでデータ開始行までReadLineをしてから、 以下のコードで、カンマ間が空でなければカウントをして列数を取得するようにしました。 For Each objTemp In Split(SR.ReadLine(), ",") If objTemp <> "" Then intColCount = intColCount + 1 End If Next

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

CSVファイルとしては、7列用のフォーマットだけど、実データは3個しかない、という状況ですね。 CSVファイルは、何行あっても、どの行も7列用のフォーマットになっているはずです。 ところで、たった1行を見て、実データが3個だからといって、そのファイルのすべての行で実データが3個だと言い切れるのでしょうか? 行ごとに実データの個数が異なる可能性は無いのですか?

ddtqp
質問者

お礼

気にかけていただいてありがとうございます! >行ごとに実データの個数が異なる可能性は無いのですか? 7行目まで項目があり、 8行目から、データエンドまで3列固定です。

すると、全ての回答が全文表示されます。

関連するQ&A