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

質問編集履歴

2

修正後ソースの追記

2017/10/26 01:01

投稿

cha-ra
cha-ra

スコア40

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,31 @@
14
14
  力技として、出力文字列の前後にダブルクォートを付与することで、
15
15
  3連続のダブルクォート「"""」を出力し、
16
16
  出来上がったファイルを開いて一括置換するという方法を取れますが、
17
- できれば一回の出力で綺麗に作成したいと思っています。。。
17
+ できれば一回の出力で綺麗に作成したいと思っています。。。
18
+
19
+ ###追記2
20
+ コメントへの返信ではMarkDownが利用できなかったので、
21
+ 修正後のコードをこちらに追記します。
22
+
23
+ ```c#
24
+ // データ出力部
25
+ using (var sw = new StreamWriter(path, false, System.Text.Encoding.GetEncoding("shift_jis")))
26
+ using (var csv = new CsvHelper.CsvWriter(sw)) {
27
+ csv.Configuration.RegisterClassMap(mapper);
28
+ csv.Configuration.HasHeaderRecord = false;
29
+
30
+ csv.Configuration.QuoteAllFields = false;
31
+ csv.Configuration.QuoteNoFields = true;
32
+
33
+ foreach (var data in dataList) {
34
+ csv.WriteRecord(data);
35
+ }
36
+ }
37
+
38
+ // StringConverter実装クラス
39
+ public class AddQuoteConverter : CsvHelper.TypeConversion.StringConverter {
40
+ public override string ConvertToString(TypeConverterOptions options, object value) {
41
+ return @"""" + base.ConvertToString(options, value) + @"""";
42
+ }
43
+ }
44
+ ```

1

利用したくない解決策を追記

2017/10/26 01:01

投稿

cha-ra
cha-ra

スコア40

title CHANGED
File without changes
body CHANGED
@@ -7,4 +7,11 @@
7
7
  何か方法はありませんでしょうか?
8
8
 
9
9
  または、CsvHelper.Configuration.QuoteAllFields に true を設定したうえで、
10
- 任意の列のみダブルクォートを外す方法がありますか?
10
+ 任意の列のみダブルクォートを外す方法がありますか?
11
+
12
+ ---
13
+ ###追記
14
+ 力技として、出力文字列の前後にダブルクォートを付与することで、
15
+ 3連続のダブルクォート「"""」を出力し、
16
+ 出来上がったファイルを開いて一括置換するという方法を取れますが、
17
+ できれば一回の出力で綺麗に作成したいと思っています。。。