質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

4回答

6890閲覧

[VB] CSVデータを二次元配列として保持したい

inukujira

総合スコア130

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2015/07/13 07:20

次のCSVファイルがあります。

lang

12015/07/13,0,1 22015/07/14,0,2 32015/07/15,0,3

これをカンマ区切りの1行目と3行目を二次元配列として変数に保持したいです。

data(0,0) → "2015/07/13"
data(0,1) → 1
data(1,0) → "2015/07/14"
data(1,1) → 2
data(2,0) → "2015/07/15"
data(2,1) → 3

色々なやり方があると思いますが、実際のCSVファイルはかなり大きいので
高速で処理を行う方法があればご教示下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

自己解決

すいません。
解決しなかったので自己解決とさせていただきます。
回答有難うございました。

投稿2015/07/14 05:25

inukujira

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1行毎の読み込みは、意外とボトルネックとなる。
また、関数を呼び出すだけでもオーバーヘッドは生じる。

って考えると、
・数k~数Mバイト単位で、バッファに一気に読み込み。
・バッファをif文で文字単位の解析をしつつ、配列に格納。
といったベタな実装が意外と高速だったりします。

投稿2015/07/13 14:10

horohoro

総合スコア490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一行ずつ読み込むので、処理に多少時間がかかってしまうかもしれませんが、
例の一つとして……。

参照元:CSV形式のファイルを読み込む

lang

1Dim objFile As New System.IO.StreamReader("D:\a.csv") 2 3strLine = objFile.ReadLine() 4 While (strLine <> "") 5 '行単位データをカンマ部分で分割し、配列へ格納 6 strTemp = Split(strLine, ",") 7 8(略)

投稿2015/07/13 08:31

f-hanako

総合スコア159

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1回限りの変換の場合、
テキストエディタでデータ1個分の手順を記録して、それを繰り返し実行するか、
Excelのセル関数で実行して、テキストエディタで整形するのが手軽だと思います。
もしくは、得意なプログラム言語でトランスレーターを作成すればいいと思います。
データの量によってどれにするか見極めます。

投稿2015/07/13 08:01

rik

総合スコア1151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inukujira

2015/07/13 08:15

すいません、わざわざ回答頂き大変嬉しく思いますが 全く回答になってないです。
rik

2015/07/13 08:25

すみません、CSVファイルをテキストファイルに変換するものとして間違って読んでしまいました。「CSVを読み込んで変数として保持する」ですね。失礼しました。 CSVファイルを1行ずつ読み込んでいては時間がかかりますので、メモリの許す範囲でブロック毎の読み込みで処理すると幾分早いかと思います。 回答になっていないかもしれません。すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問