C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: CSVファイルを途中から読めませんか?


(過去ログ 163 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■94309 / inTopicNo.1)  CSVファイルを途中から読めませんか?
  
□投稿者/ ささき (8回)-(2020/04/01(Wed) 14:10:25)

分類:[VB.NET/VB2005 以降] 

Excelで開くと500,000行ほどの、カンマ区切りのCSVファイルがあります。
これをVBで20,000行〜とかのように、途中からの読み込みは出来ないでしょうか?

よろしくお願いします。

引用返信 編集キー/
■94311 / inTopicNo.2)  Re[1]: CSVファイルを途中から読めませんか?
□投稿者/ 774RR (779回)-(2020/04/01(Wed) 14:14:54)
1行が固定長であれば簡単だけど、可変長ならどの言語でも原理的にできません。
読んでみないと「行」の判断ができないので。

引用返信 編集キー/
■94315 / inTopicNo.3)  Re[1]: CSVファイルを途中から読めませんか?
□投稿者/ 魔界の仮面弁士 (2658回)-(2020/04/01(Wed) 14:39:12)
No94309 (ささき さん) に返信
> Excelで開くと500,000行ほどの、カンマ区切りのCSVファイルがあります。
> これをVBで20,000行〜とかのように、途中からの読み込みは出来ないでしょうか?

「改行を含んだデータ」や「カンマを含んだデータ」が無い想定なら、
これでどうでしょう。単に読み飛ばすだけですけれども。

For Each line As String In System.IO.File.ReadLines(csvPath, enc).Skip(19999)
  Dim columns() As String = line.Split(","c)
  '
  '
Next


相手が固定長 CSV の場合は、不要な行を読み捨てるのではなく、
実際の読み取り開始位置を指定して読み取れるのですけれどね。
引用返信 編集キー/
■94322 / inTopicNo.4)  Re[2]: CSVファイルを途中から読めませんか?
□投稿者/ ささき (9回)-(2020/04/01(Wed) 16:38:47)
No94315 (魔界の仮面弁士 さん) に返信
> ■No94309 (ささき さん) に返信
>>Excelで開くと500,000行ほどの、カンマ区切りのCSVファイルがあります。
>>これをVBで20,000行〜とかのように、途中からの読み込みは出来ないでしょうか?
> 
> 「改行を含んだデータ」や「カンマを含んだデータ」が無い想定なら、
> これでどうでしょう。単に読み飛ばすだけですけれども。

2020/04/01 03:47,-10.74,0.00,13.42
2020/04/01 03:48,8.07,0.00,-8.05
データはこのようなもので固定長でもありませんが如何でしょう?
読み飛ばしでも良いのですが原型が分からないのでは困ります。

> For Each line As String In System.IO.File.ReadLines(csvPath, enc).Skip(19999)
>   Dim columns() As String = line.Split(","c)
>   '
>   '
> Next

この使い方が分かってません。
csvPath はファイル名ですか?


引用返信 編集キー/
■94323 / inTopicNo.5)  Re[3]: CSVファイルを途中から読めませんか?
□投稿者/ 魔界の仮面弁士 (2661回)-(2020/04/01(Wed) 16:47:36)
No94322 (ささき さん) に返信
>>For Each line As String In System.IO.File.ReadLines(csvPath, enc).Skip(19999)
>>  Dim columns() As String = line.Split(","c)
>>  '
>>  '
>>Next
>
> この使い方が分かってません。

System.IO 名前空間の
File クラスの
ReadLines メソッドについて調べてみてください。
https://www.atmarkit.co.jp/ait/articles/1005/13/news097.html
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.file.readlines?


>> .ReadLines(csvPath, enc)
> csvPath はファイル名ですか?

第一引数はファイル名でも良いですが、
ファイルのフルパスを指定した方が、より確実です。

第二引数には、そのファイルの文字コードに合わせて調整してください。
ASCII 前提なら、
 Dim enc = System.Text.Encoding.ASCII
Shift_JIS のファイルを読み込むのであれば、
 Dim enc = System.Text.Encoding.GetEncoding("Shift_JIS")
UTF-8 なファイルなら、
 Dim enc = System.Text.Encoding.UTF8
を指定することができます。
引用返信 編集キー/
■94332 / inTopicNo.6)  Re[4]: CSVファイルを途中から読めませんか?
□投稿者/ ささき (10回)-(2020/04/01(Wed) 20:06:02)
2020/04/02(Thu) 12:14:09 編集(投稿者)

No94323 (魔界の仮面弁士 さん) に返信

解決済みを忘れてました。

-3.50などマイナスが入れば崩れるのでしょうか。
一部が違ったものにはなりますが、整数ばかりの時には問題はないようですので、
取り敢えずはそちらで使わせていただきます。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -