
###前提・実現したいこと
「toconuts C#でExcel CSVの読み込む」というサイトを参考にして、Excel CSVファイルを読み込むシステムを作ろうと考えています。
具体的には、ボタンとテキストボックスが存在するフォームを作り、ボタンを押すとExcel CSVファイルを読み込み、その内容をテキストボックスに書き込むというものを作ろうとしました。
###発生している問題・エラーメッセージ
しかし、「デバッグなしで開始」をしてみると、途中でエラーが発生してしまい、上手く稼働させることが出来ません。
アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。 [続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。 [終了]をクリックすると、アプリケーションは直ちに終了します。 インデックスが配列の境界外です。
今度は「デバッグの開始」をしてみると、このようなエラーが出ました。
IndexOutOfRangeExceptionはハンドルされませんでした。 型'System.IndexOutOfRangeException'のハンドルされていない例外が(システムの名前.exe)で発生しました
このエラーの解決方法やアドバイス等を教えていただけたらと思いますので、よろしくお願いします。
ちなみに、C:~~\(システムの名前)\bin\Debugのところに読み込みたいExcel CSVファイルであるsample.csvを置いています
以下の画像がそのCSVファイルの内容です。
###該当のソースコード
C#
1using System.IO; 2using System; 3using System.Collections.Generic; 4using System.ComponentModel; 5using System.Data; 6using System.Drawing; 7using System.Linq; 8using System.Text; 9using System.Threading.Tasks; 10using System.Windows.Forms; 11using Microsoft.VisualBasic.FileIO; 12 13namespace (システムの名前) 14{ 15 public partial class Form1 : Form 16 { 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 private void button1_Click(object sender, EventArgs e) 22 { 23 TextFieldParser parser = new TextFieldParser("sample.csv",System.Text.Encoding.GetEncoding("Shift_JIS")); 24 using (parser) 25 { 26 parser.TextFieldType = FieldType.Delimited; 27 parser.SetDelimiters(","); // デリミタ指定 28 29 // parser.HasFieldsEnclosedInQuotes = false; 30 // parser.TrimWhiteSpace = false; 31 32 while (!parser.EndOfData) 33 { 34 int n = 0; 35 string[] row = parser.ReadFields(); //今度はこの箇所でエラーが発生するようになりました 36 foreach (string field in row) 37 { 38 // 各処理 39 textBox1.Text += field[n]; //以前エラーが発生した箇所 40 n++; 41 } 42 textBox1.Text += "\r\n"; 43 } 44 parser.Close(); 45 } 46 } 47 } 48}
回答2件
あなたの回答
tips
プレビュー