質問編集履歴
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,21 @@
|
|
5
5
|
■■な機能を実装中に以下のエラーメッセージが発生しました。
|
6
6
|
|
7
7
|
### 発生している問題・エラーメッセージ
|
8
|
+
エラー文
|
8
|
-
|
9
|
+
Microsoft.VisualBasic.FileIO.MalformedLineException: '現在の区切り記号を使用して、行 5 を解析できません。'
|
10
|
+
```C#エラー場所
|
11
|
+
while (!parser.EndOfData)
|
12
|
+
{
|
13
|
+
data = parser.ReadFields();
|
14
|
+
int fieldCount = data.Length;
|
15
|
+
DataRow row = dt.NewRow();
|
16
|
+
for (int i = 0; i < fieldCount; i++)
|
17
|
+
{
|
18
|
+
row[i] = data[i];
|
19
|
+
}
|
20
|
+
dt.Rows.Add(row);
|
21
|
+
}
|
22
|
+
```
|
9
23
|
|
10
24
|
|
11
25
|
### 該当のソースコード
|
@@ -171,15 +185,20 @@
|
|
171
185
|
SurferOnWww様回答ありがとうございます。参考サイトをみて変更してみたのですが、DataGridViewには何も表示されませんでした。自分で原因はここだろうと絞り込んで見たのですが、私の考えとしましてはこれは、""や,の含まれている処理が機能できていないため、何も返ってこないと考えております。CSVの中身も記載しておきます。
|
172
186
|
```C#
|
173
187
|
問題点
|
188
|
+
private void ReadCSV(DataTable dt, bool hasHeader, string FileName, string separator, bool quote)
|
189
|
+
{
|
190
|
+
//CSVを便利に読み込んでくれるTextFieldParserを使います。
|
191
|
+
TextFieldParser parser = new TextFieldParser(FileName, Encoding.GetEncoding("shift_jis"));
|
192
|
+
Console.WriteLine("OK");
|
193
|
+
//これは可変長のフィールドでフィールドの区切りのマーカーが使われている場合です。
|
194
|
+
//フィールドが固定長の場合は
|
195
|
+
//parser.TextFieldType = FieldType.FixedWidth;
|
174
|
-
parser.TextFieldType = FieldType.Delimited;
|
196
|
+
parser.TextFieldType = FieldType.Delimited;
|
175
|
-
|
176
197
|
parser.Delimiters = new string[] { "," };
|
177
|
-
|
178
|
-
|
179
198
|
// 空白文字をトリム
|
180
199
|
parser.TrimWhiteSpace = true;
|
181
|
-
|
182
200
|
parser.HasFieldsEnclosedInQuotes = true;
|
201
|
+
Console.WriteLine("OK!");
|
183
202
|
string[] data;
|
184
203
|
//ここのif文では、DataTableに必要なカラムを追加するために最初に1行だけ読み込んでいます。
|
185
204
|
//データがあるか確認します。
|
@@ -214,11 +233,13 @@
|
|
214
233
|
dt.Rows.Add(row);
|
215
234
|
}
|
216
235
|
}
|
236
|
+
Console.WriteLine("ここまで");
|
217
237
|
//ここのループがCSVを読み込むメインの処理です。
|
218
238
|
//内容は先ほどとほとんど一緒です。
|
239
|
+
↓ここからが原因だと考えます。
|
219
240
|
while (!parser.EndOfData)
|
220
241
|
{
|
221
|
-
data = parser.ReadFields();
|
242
|
+
data = parser.ReadFields();←エラー
|
222
243
|
int fieldCount = data.Length;
|
223
244
|
DataRow row = dt.NewRow();
|
224
245
|
for (int i = 0; i < fieldCount; i++)
|
@@ -227,4 +248,5 @@
|
|
227
248
|
}
|
228
249
|
dt.Rows.Add(row);
|
229
250
|
}
|
251
|
+
}
|
230
252
|
```
|
3
画像の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -164,4 +164,67 @@
|
|
164
164
|
↑現在の状況
|
165
165
|
###
|
166
166
|
↑完成形
|
167
|
+

|
168
|
+
↑CSVの中身
|
167
|
-
ここにより詳細な情報を記載してください。
|
169
|
+
ここにより詳細な情報を記載してください。
|
170
|
+
追記ーーーーーーーーーーー
|
171
|
+
SurferOnWww様回答ありがとうございます。参考サイトをみて変更してみたのですが、DataGridViewには何も表示されませんでした。自分で原因はここだろうと絞り込んで見たのですが、私の考えとしましてはこれは、""や,の含まれている処理が機能できていないため、何も返ってこないと考えております。CSVの中身も記載しておきます。
|
172
|
+
```C#
|
173
|
+
問題点
|
174
|
+
parser.TextFieldType = FieldType.Delimited;
|
175
|
+
|
176
|
+
parser.Delimiters = new string[] { "," };
|
177
|
+
|
178
|
+
|
179
|
+
// 空白文字をトリム
|
180
|
+
parser.TrimWhiteSpace = true;
|
181
|
+
|
182
|
+
parser.HasFieldsEnclosedInQuotes = true;
|
183
|
+
string[] data;
|
184
|
+
//ここのif文では、DataTableに必要なカラムを追加するために最初に1行だけ読み込んでいます。
|
185
|
+
//データがあるか確認します。
|
186
|
+
if (!parser.EndOfData)
|
187
|
+
{
|
188
|
+
//CSVファイルから1行読み取ります。
|
189
|
+
data = parser.ReadFields();
|
190
|
+
//カラムの数を取得します。
|
191
|
+
int cols = data.Length;
|
192
|
+
if (hasHeader)
|
193
|
+
{
|
194
|
+
for (int i = 0; i < cols; i++)
|
195
|
+
{
|
196
|
+
dt.Columns.Add(new DataColumn(data[i]));
|
197
|
+
}
|
198
|
+
}
|
199
|
+
else
|
200
|
+
{
|
201
|
+
for (int i = 0; i < cols; i++)
|
202
|
+
{
|
203
|
+
//カラム名にダミーを設定します。
|
204
|
+
dt.Columns.Add(new DataColumn());
|
205
|
+
}
|
206
|
+
//DataTableに追加するための新規行を取得します。
|
207
|
+
DataRow row = dt.NewRow();
|
208
|
+
for (int i = 0; i < cols; i++)
|
209
|
+
{
|
210
|
+
//カラムの数だけデータをうつします。
|
211
|
+
row[i] = data[i];
|
212
|
+
}
|
213
|
+
//DataTableに追加します。
|
214
|
+
dt.Rows.Add(row);
|
215
|
+
}
|
216
|
+
}
|
217
|
+
//ここのループがCSVを読み込むメインの処理です。
|
218
|
+
//内容は先ほどとほとんど一緒です。
|
219
|
+
while (!parser.EndOfData)
|
220
|
+
{
|
221
|
+
data = parser.ReadFields();
|
222
|
+
int fieldCount = data.Length;
|
223
|
+
DataRow row = dt.NewRow();
|
224
|
+
for (int i = 0; i < fieldCount; i++)
|
225
|
+
{
|
226
|
+
row[i] = data[i];
|
227
|
+
}
|
228
|
+
dt.Rows.Add(row);
|
229
|
+
}
|
230
|
+
```
|
2
画像の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
前提・実現したいこと
|
2
2
|
DataGridViewにOpenDialogで選択したCSVファイルを表示させたい。
|
3
3
|
ここに質問の内容を詳しく書いてください。
|
4
4
|
WindowsFormsを使ってOpenDialogで選択したCSVファイルをDataGridViewを表示させたい。
|
@@ -161,4 +161,7 @@
|
|
161
161
|
### 補足情報(FW/ツールのバージョンなど)
|
162
162
|
visual studio2019
|
163
163
|

|
164
|
+
↑現在の状況
|
165
|
+
###
|
166
|
+
↑完成形
|
164
167
|
ここにより詳細な情報を記載してください。
|
1
誤字
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
CSVを読み込んでDataGridViewに表示させたい。
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
DataGridViewにOpenDialogで選択した
|
2
|
+
DataGridViewにOpenDialogで選択したCSVファイルを表示させたい。
|
3
3
|
ここに質問の内容を詳しく書いてください。
|
4
|
-
WindowsFormsを使ってOpenDialogで選択した
|
4
|
+
WindowsFormsを使ってOpenDialogで選択したCSVファイルをDataGridViewを表示させたい。
|
5
5
|
■■な機能を実装中に以下のエラーメッセージが発生しました。
|
6
6
|
|
7
7
|
### 発生している問題・エラーメッセージ
|
@@ -157,7 +157,7 @@
|
|
157
157
|
|
158
158
|
ここに問題に対して試したことを記載してください。
|
159
159
|
Console.WriteLine(odf.FileName);
|
160
|
-
でOpenDialogからファイルの受け渡しが出来ているのは出来ているので
|
160
|
+
でOpenDialogからファイルの受け渡しが出来ているのは出来ているのでReadCSVが未完成状態が原因だと考えています。
|
161
161
|
### 補足情報(FW/ツールのバージョンなど)
|
162
162
|
visual studio2019
|
163
163
|

|