• 締切済み

CSVから指定行だけを読み込み

VB.NETを使用しています。 行数がランダムなCSVファイルからReadLineを使用して 1行を読み込むことは可能なのですが これを指定した行(例えば最終行)を読み込ませる為には どのように指定すればいいのでしょうか?

みんなの回答

noname#256877
noname#256877
回答No.2

CSVファイルの特性上、指定行だけを読み込むことは不可能です。代替案として・・・ 1)固定長ファイルにして、ランダムファイルで読み込む 2)CSVファイルをインコアしてしまい、メモリから参照する CSVファイルが大きいと、2)の方法はお勧めできませんorz

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

一行目以降を読み込む場合、それが最終行かどうかにかかわらず、 「読み飛ばして処理する」 以外に方法はないと思います・・・(残念ながら)。 最終行は、 reader.Peek() = -1 なので、ちょっとはマシですが・・・。

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

関連するQ&A

  • CSVファイルの特定の行だけを読み込みたいです。

    例えば以下のようなCSV形式のデータが10000行あるとします。  1,10,15,3  2,1,5,1  70,2,4,2  2,4,5,6  11,1,9,9  ・・・ 上記ファイルから、例えば9999行目を取得したい場合、 現在は以下のような手順で9998行をループで読み込んでから、 9999行目を取得しています。(エラー処理などは省いています)  BufferedReader br = new BufferedReader(new FileReader("hoge.csv"));  for( int i=0; i<9998; i++ ){ br.readLine(); }  System.out.println("9999行目="+br.readLine()); ただし、上記の通りループを9998回まわし、 データを1行ずつ読み込むのは非常に効率が悪いです。 できれば、br.readLine(9999); といった感じで行数を直接指定できる方法があるならば、 無駄な処理を省けて見栄えも速度も良くなると思うのですが、 Javaの標準のクラスではこういったことは可能なのでしょうか? 私なりに調べてみたのですが調べ方が悪いのか知識が及ばないため、 こちらで質問させていただきました。 もしご存知の方がおられましたらアドバイスいただけますと助かります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 50万行のtxtファイルを行数指定で分割したい

    50万行レベルのテキストファイルがあります このファイルをVBAで行数を指定して3つのファイルに分割したいのですが可能でしょうか イメージとしては以下のような形になります ・一行目〜テキストボックス1で指定した行数 ・textbox1で指定した行数〜textbox2で指定した行数 ・textbox2で指定した行数〜最終行 どなたか教えて下さい よろしくお願いします

  • Csvから1行ずつ変数に格納するには;

    いつもお世話になっています。 次のようなcsvファイルがあります。 会員番号,パスワード,データ1,データ2,データ3 1234567,1111,1970/1/1,1990/4/1,A 1111111,1,1960/1/1,1985/4/1,AB ・ ・ ・ このcsvファイルをExcelのVBAで次のようなコードで読みとろうとしています。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFile("csvファイル名") Set ts = f.OpenAsTextStream(1, -2) ssk = ts.readline readlineは1行だけ読み込むと覚えているのですが、なぜか変数sskにはすべての行が連結された状態で格納されてしまいます。 2回目以降のreadlineでは「ファイルにこれ以上データがありません。」と出ます。何か根本的に間違っているのでしょうか;; このようなcsvファイルを、正しく1行ずつ変数に格納する方法にはどのようなものがありますでしょうか。 よろしくお願いします。

  • Excel2003でcsvの指定行を読み込む

    こんにちわ。 Excel2003のマクロでcsvファイルを読み込みたいと思っています。 csvの中身は下記通りです。 例)   A   B   C   D.......... 1  "氏名" 2  2    2   1   3....(整数の羅列) 3  1    3   2   3....(整数の羅列) 4  3    3   3   3....(整数の羅列) 5  2   1   2   3....(整数の羅列) このファイルを、エクセル上でボタンを押したら(マクロを実行したら)指定した行のみを読み込んで、それをエクセルのシートの指定したセルに代入するのは可能でしょうか?それぞれの行の整数の数は違います。

  • VBA csvを100万行ずつ各シートに読み込み

     今晩は、質問させていただきます。どうぞよろしくお願いいたします。 環境:Win7 64bit SP1、 エクセル2010 でございます。  「1000万行×3列」のCSVファイルデータを、100万行ずつ シート1~10に振り分けたく悩んでおります。 ・エクセルは100万行しかありませんので、「一旦開いてから各シートに分割」という方法が使えませんし、 ・またReadLineいたしますと(1行ずつの方法しか存じませんので)時間がかかりそうですし、 何よりcsvファイルのカンマ記号も含め1行全てが、エクセルのひとつのセルに入ってしまうのでは、などと考えております。  何か良さそうな方法を思いつかれる方はおられませんでしょうか。 もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • CSVの最終行は?

    エクセル2003の最終行、限界行は65536行ですが エクセル2003のCSVファイルの限界の行も65536行なのでしょうか?

  • テキストファイル(CSV)の3行目以降を削除バッチ

    数百あるテキストファイル(CSVファイル)に対し、 コマンドプロンプトでバッチ処理をして 3行目以降のデータをすべて削除したいです。 ネット検索しても探しだせず、どなたかお詳しい方、ご教授願います。 初心者なので、コマンドや専門的な用語等わかりませんが、 コピペして使えるような例文があるとありがたいです。 ※対象ファイルは指定のフォルダに集められた状態です ※上書きでも、別フォルダに新規ファイルができてもどちらでも大丈夫です ※それぞれのファイルで3行目以降の行数はことなります。

  • CSVファイルの行が突然消える

    あるデータを抽出し、それをCSVファイルで取り込み、1つ取り込む ごとにCSVファイルが1行ずつ増えていきます。 適当な時期に、何行かたまった行を一気にAccessを用いてさらに取り込み ます。(取り込むのみ) あるとき、CSVファイルを開くと突然CSVファイルの行が減って いるのです。 何が起きているのでしょうか? Accessに何かマクロとか組んであって突然消えるのでしょうか? Accessを開く前と開いた後(取り込んだ後)で、特にCSVファイル に変更はありません。 あるとき突然CSVファイルを開くと昨日まであった行が突然 消えてしまうのです。(いつ起こるのか予測できていません。) CSVファイルにはマクロが組んであるようには見えません。 何かわかればお願いします。

  • CSVの3行目だけを…

    はじめまして!Nakanoと申します。 えっと、以下質問になります。おねがいします。。 CGI/Perlを始めて1週間程度の素人なのですが、 CSVファイルをHTMLのテーブル表示させる 様にしたいなと思っています。 そこで用意したCSVファイルが5行と8列で カンマ区切りのみで構成されています。 このCSVファイルから3行目だけを抽出する方法 ってありますでしょうか? 1行目のみ表示や1行目以外の2行目以下全てを表示 させたりは出来たのですが、3行目だけを表示するの がどうしても分かりませんでした・・・・・ 何方様か。よろしければその辺の所を詳しくご指導 いただけないでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Perl
  • ファイル内の1行(レコード)から指定バイト数だけを読込みたい。

    ファイル内の1行(レコード)から指定バイト数だけを読込みたい。 // ファイルオープン FileInputStream fis = new FileInputStream(file); InputStreamReader isr; isr = new InputStreamReader(fis); BufferedReader result = new BufferedReader(isr); while (result.readLine() != null) { // 末尾まで移動する } 上記のようにBufferedReaderを使い、ファイルを読み込んでいるのですが、 ファイル内の1行ごとに指定バイト数だけを読み込みたいです。 readLineメソッドでは1行を全部読み込んでしまうため出来ません。 (readLineで一度他の変数へ入れてからというのは無しです。読込む時点で指定バイト数としたいのです。) readメソッドでは、行ごとの指定って出来ないですよね・・・。 ファイル操作系の知識が少ない為、なかなか探せません。 読み込む時点で1行の取得レコード長に制限値を設ける方法はないでしょうか? また、取得レコード長が制限値を超えた場合、エラーメッセージを出したいのですがその判定とかも可能でしょうか? どうかよろしくお願いします。 ロジックとしてはこんな感じにしたいです。 while(ファイルの終端まで行を読み込む){   // 読み込んだ1行が2048バイト未満かを判定   if(読み込んだ1行が2048バイトを超えている場合){     エラーメッセージを出力する(処理はそのまま続行)   }   1行から2048バイト未満を取得 }

    • ベストアンサー
    • Java
TN-390の対応プリンターとは?
このQ&Aのポイント
  • 現在プリンターを買い換える予定ですが、TN-390のインクのストックが残っています。TN-390を使用できるプリンターがあれば教えてください。
  • TN-390のインクを使い続けたいのですが、対応するプリンターはありますか?
  • 新しいプリンターを購入しようと思っていますが、現在のプリンターで使用しているTN-390のインクを引き続き利用したいです。TN-390をサポートしているプリンターがあるか教えてください。
回答を見る