前提・実現したいこと
C#.NETでSQLのデータベースをCSV出力したいのですが、StreamWriterで出力したときセル内改行がうまくいかず普通に改行されてしまいます。
例えばデータベース上では複数行あるデータは"あいうえお\r\nかきくけこ"と格納されています。それをそのままStreamWriterでcsv出力した場合"かきくけこ"は次のデータで改行されてしまいます。
StreamWriterでもセル内改行はどうすればうまくいくでしょうか?
エクセルで出力したときはセル内改行はうまくいくのですが、DateTime型の出力がうまくいきません。
2021/05/19 9:10:00で保存した場合、CSVでは05/19/2021 9:10:00と保存されてしまいます。
左寄せで保存されているし、エクセルで書式を"YYYY/MM/DD HH:MM:SS"とかに変えても変わらないので文字列として保存されてしまうのかなと。
C#
1//どちらも文字列で保存されてしまう? 2xlApp.Cells[1, 1] = dtr.GetValue(i); //中身DateTime型 3xlApp.Cells[1, 1] = DateTime.Now;
できれば始めに書いたStreamWriterのセル内改行の方を解決してStreamWriterで出力できるようにしたいです。
エクセルの出力使うと重すぎるので。。。
試したこと
改行コード\r\nの部分を置換してみました。
Environment.NewLineや\nなどあと、Encodingをutf-8、Shift_JISに変えてみたりも試しましたが無理でした。
該当のソースコード
C#
1StreamWriter sw = new StreamWriter(filepass, false, Encoding.GetEncoding("Shift_JIS"));//Shift_JIS or utf-8 2sw.WriteLine("あいうえお\r\nかきくけこ"); 3sw.WriteLine("あいうえお\rかきくけこ"); 4sw.WriteLine("あいうえお\nかきくけこ"); 5sw.WriteLine("あいうえお" + Environment.NewLine + "かきくけこ"); 6//どれもセル内改行できず普通に改行してしまう。
動作環境
OS windows10
VisualStudio2013
.NET Framework4.8
SQLはMySQLです。