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

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

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

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

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

Q&A

解決済

3回答

5969閲覧

vbにてカンマ区切りのcsvファイルを読み込んで2次元配列の値を表示させる方法

kumakumatan

総合スコア213

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

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

0グッド

0クリップ

投稿2018/06/07 07:23

OS:Windows7Sp1
VisualStudio2017community
言語:VisualBasic.NET

test.txtファイルがあります。

-----test.txtファイルの中身---------

1,あいうえお,A
2,かきくけこ,B
3,さしすせそ,C

これを読み込ませて配列変数にセットして、
stResult(1)(1)と指定すると、その値が「かきくけこ」
と表示させるようにしたく思います。

vb

1' カレントディレクトリの取得 2 Dim stCurrentDir As String = System.Environment.CurrentDirectory 3 'テキストファイル処理 4 Dim strFileName As String 5 ' 読み込むファイルを設定 6 strFileName = stCurrentDir & "\test.txt" 7 8 '--メッセージボックス--- 9 '選択したボタンを判定する 10 If MessageBox.Show("処理していいですか?", "確認", MessageBoxButtons.OKCancel) = DialogResult.OK Then 11 'OKの場合 12 MessageBox.Show("OK") 13 If System.IO.File.Exists(strFileName) Then 14 Dim cReader As New System.IO.StreamReader(strFileName, System.Text.Encoding.Default) 15 Try 16 ' StreamReader の新しいインスタンスを生成する 17 'Dim cReader As New System.IO.StreamReader(strFileName, System.Text.Encoding.Default) 18 ' 読み込んだ結果をすべて格納するための変数を宣言する 19 Dim stResult As List(Of String) = New List(Of String)() 20 ' 読み込みできる文字がなくなるまで繰り返す 21 Dim cnt As Long 22 While (cReader.Peek() >= 0) 23 ' ファイルを 1 行ずつ読み込む 24 stResult.Add(cReader.ReadLine()) 25 cnt += 1 26 End While 27 ' cReader を閉じる (正しくは オブジェクトの破棄を保証する を参照) 28 cReader.Close() 29 ' 結果を表示する 30 'stResult(配列番号)で行数を表示させる 31 'MessageBox.Show(cnt) 32 If (cnt > 0) Then 33 MessageBox.Show(stResult(1)) 34 End If 35 Catch ex As Exception 36 ' 何かエラー処理を行う 37 Finally 38 ' 読み込みファイルを閉じる 39 If cReader IsNot Nothing Then 40 cReader.Close() 41 End If 42 End Try 43 End If 44 Exit Sub 45 46 Else 47 'OK以外の場合 48 MessageBox.Show("キャンセル") 49 Exit Sub 50 End If

どのようにしたら実現できるかご教示いただきたく宜しくお願いします。

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

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

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

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

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

guest

回答3

0

もう少し問題を整理して、何が分かっていないのか明確にしましょう。
現状の質問ですと、丸投げと捉えられる可能性があります。

VB.NET CSV 読み込み List

投稿2018/06/07 07:44

YAmaGNZ

総合スコア10242

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

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

kumakumatan

2018/06/07 08:07

ご返信ありがとうございます。 String.Splitメソッドを利用してやってみました。 Dim textLines As New List(Of String()) While (cReader.Peek() >= 0) ' ファイルを 1 行ずつ読み込む Dim stBuffer As String = cReader.ReadLine() ' 読み込んだものを追加で格納する Dim cols() As String cols = Split(stBuffer, ",") textLines.Add(cols) End While Dim strArr()() As String strArr = textLines.ToArray MessageBox.Show(strArr(1)(1)) としても表示されなく悩んでいます。 宜しくお願いします。
YAmaGNZ

2018/06/07 08:40

textLinesそのままでよいのでは?
kumakumatan

2018/06/07 23:59

ありがとうございます。 MessageBox.Show(textLines(2)(1)) などにて表示できました。
guest

0

ベストアンサー

String.Splitメソッド を組み合わせましょう。,カンマでSplitすれば良い訳です。(※あとはご自分で考えてみましょう)

投稿2018/06/07 07:36

dodox86

総合スコア9183

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

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

kumakumatan

2018/06/07 08:06

ご返信ありがとうございます。 String.Splitメソッドを利用してやってみました。 Dim textLines As New List(Of String()) While (cReader.Peek() >= 0) ' ファイルを 1 行ずつ読み込む Dim stBuffer As String = cReader.ReadLine() ' 読み込んだものを追加で格納する Dim cols() As String cols = Split(stBuffer, ",") textLines.Add(cols) End While Dim strArr()() As String strArr = textLines.ToArray MessageBox.Show(strArr(1)(1)) としても表示されなく悩んでいます。 宜しくお願いします。
dodox86

2018/06/07 13:55 編集

確認しましたが、ご提示のコード、MessageBox.Show(strArr(1)(1)) の部分で"あいうえお"と表示されましたよ。デバッガーでstrArrの内容を確認してみてください。 (Visual Studio 2017 + .NET Framework 4.5)
kumakumatan

2018/06/08 00:02

ありがとうございます。 Console.WriteLine(strArr(1)(2)) などにて表示できました。 MessageBox.Show(strArr(2)(1)) にてでも表示できました。 「try~catch」文で処理を記載していて、 間違っていた処理が手前であり(文中にない処理)、 例外処理(catch)にいってしまいました。 不要な処理を外したら、表示できました。ありがとうございます。
guest

0

「2次元配列を動的に作る」ことにチャレンジしてみてください。
この記事なんかが参考になるのではないでしょうか。配列サイズはファイルの行数から求まりますよ。
https://teratail.com/questions/67042
上記のキーワードで色々ググるのもいいかもしれませんね。

もし実装する中でさらにトラブルが起こったら質問を修正するか、補足をしてください。答えます。

投稿2018/06/07 07:37

Rocky

総合スコア261

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

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

Rocky

2018/06/07 07:38

※入力テキストの形式が固定であれば、動的じゃなくてもいいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問