質問するログイン新規登録

回答編集履歴

2

文章を修正

2021/05/19 05:33

投稿

退会済みユーザー
answer CHANGED
@@ -9,7 +9,7 @@
9
9
  さしすせそ",たちつてと
10
10
  ```
11
11
 
12
- 自力でダブルクォート処理するが面倒な場合は、Nugetで既存のCSVライブラリをダウンロードして活用した方がよいでしょう。下記は [CSVHelper](https://www.nuget.org/packages/CsvHelper/) を使用した例です。
12
+ 自力でダブルクォート処理するが面倒な場合は、Nugetで既存のCSVライブラリをダウンロードして活用した方がよいでしょう。下記は [CSVHelper](https://www.nuget.org/packages/CsvHelper/) を使用した例です。
13
13
 
14
14
  ```C#
15
15
  using CsvHelper;

1

サンプル追加

2021/05/19 05:33

投稿

退会済みユーザー
answer CHANGED
@@ -7,4 +7,57 @@
7
7
  ```csv
8
8
  あいうえお,"かきくけこ
9
9
  さしすせそ",たちつてと
10
+ ```
11
+
12
+ 自力でダブルクォート処理するが面倒な場合は、Nugetで既存のCSVライブラリをダウンロードして活用した方がよいでしょう。下記は [CSVHelper](https://www.nuget.org/packages/CsvHelper/) を使用した例です。
13
+
14
+ ```C#
15
+ using CsvHelper;
16
+ using System.Collections.Generic;
17
+ using System.Dynamic;
18
+ using System.Globalization;
19
+ using System.IO;
20
+ using System.Text;
21
+
22
+ namespace Test
23
+ {
24
+ class Program
25
+ {
26
+ static void Main(string[] args)
27
+ {
28
+ //手抜きしてdynamic型を使う
29
+ //データ形式が判っているなら、専用クラスを定義した方がよい
30
+ var records = new List<dynamic>();
31
+ for (var i = 1; i <= 3; i++)
32
+ {
33
+ dynamic obj = new ExpandoObject();
34
+ obj.Id = i;
35
+ obj.Col1 = "あいうえお";
36
+ obj.Col2 = "かきくけこ\r\nさしすせそ";
37
+ obj.Col3 = "たちつてと";
38
+ records.Add(obj);
39
+ }
40
+
41
+ // .NET Core の場合、Shift_JIS を扱う場合はEncoding.RegisterProviderが必要
42
+ // (.NET Frameworkは不要)
43
+ Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
44
+
45
+ // CSVファイルにShift_JISで出力
46
+ using (var writer = new StreamWriter(@"c:\test\test.csv", false, Encoding.GetEncoding("Shift_JIS")))
47
+ using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
48
+ {
49
+ csv.WriteRecords(records);
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ (出力結果)
56
+ Id,Col1,Col2,Col3
57
+ 1,あいうえお,"かきくけこ
58
+ さしすせそ",たちつてと
59
+ 2,あいうえお,"かきくけこ
60
+ さしすせそ",たちつてと
61
+ 3,あいうえお,"かきくけこ
62
+ さしすせそ",たちつてと
10
63
  ```