C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#でCSVファイルを出力


(過去ログ 15 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■5333 / inTopicNo.1)  C#でCSVファイルを出力
  
□投稿者/ 2007新人 (1回)-(2007/07/10(Tue) 19:28:00)

分類:[C#] 

C#.net Windos SQLServer

CSVファイルを作成するプログラムです。

StringBuilder csv = new StringBuilder();
// ヘッダー部分
csv.Append("EmpID" + ",");
csv.Append("EmpName" + ",");
csv.Append("EmpFlag" + "\n");
// Loop処理 明細部
csv.Append(DataSet.Table[idx].EMPID + ",");
csv.Append(DataSet.Table[idx].EMPNAME + ",");
csv.Append(DataSet.Table[idx].EMPFLAG + "\n");

writer = new StreamWriter(strFileName, false, System.Text.Encoding.GetEncoding("shift-jis"));
writer.Write(csv.ToString());
writer.Close();
これを実行し、CSVファイルをテキストで開くと、

EmpID,EmpName,EmpFlag改行
Emp001,山田太郎,0改行
Emp002,山田次郎,0改行
Emp003,山田三郎,0改行

となります。

この結果に、
"Emp001","山田太郎",0改行
"Emp002","山田次郎",0改行
"Emp003","山田三郎",0改行
文字列部分には、ダブルコーテーションを含ませた結果で、CSVファイルを作成したいと思います。
(エクセルとかで行うのではなく、プログラムで行うようにしたい)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=21594
http://www.kasai.fm/wiki/rfc4180jp
など参考にしてみたのですが、上手くいきませんんでした。

ご教授お願いします
引用返信 編集キー/
■5334 / inTopicNo.2)  Re[1]: C#でCSVファイルを出力
□投稿者/ 片桐 (30回)-(2007/07/10(Tue) 19:39:42)
このあたり、VBもC#も同じ考え方だと思うのですけれど、

フローチャートとしては、

列のタイプを判断、
 タイプにCHARという文字がはいっていたら、"\""+取得列+"\""+","でappend
 上記じゃないなら、取得列+","でappend

で対応できると思うのですがいかがでしょうか?

元々列タイプがはっきりわかっているのなら上記のIF文も不要ですが(^^;

引用返信 編集キー/
■5335 / inTopicNo.3)  Re[2]: C#でCSVファイルを出力
□投稿者/ ぽぴ王子 (240回)-(2007/07/10(Tue) 19:54:39)
ぽぴ王子 さんの Web サイト
文字列をダブルクォーテーションで囲みたい、というのであれば

> csv.Append(DataSet.Table[idx].EMPID + ",");
> csv.Append(DataSet.Table[idx].EMPNAME + ",");

この2つをダブルクォーテーションで囲むようにすればOKのような。

まあ、たぶん何らかのプログラムの一部を抜き出して、差し障りの
ないように編集してみたという感じなのだと思うのだけど。
だから EMPID とか EMPNAME とかは本来は直接的に扱う感じじゃ
なくて、その辺もループでやりたいとかそういうことなのかな?と
思ってみた。エスパー伊東が。

DataTable.Columns あたりの解説を MSDN で読むといいかな。
Columns はループできるから、その中で DataColumn 型の値を
ひっぱり出して、その DataType を調べて、文字列だったら
ダブルクォーテーション付き、文字列じゃなかったらそのまま
出力してやればよい、とか。

> など参考にしてみたのですが、上手くいきませんんでした。

とりあえず「どんな風に」うまくいかないのかは説明した方が
いいと思うですよ。
うまくいきません!なんとかしてください!とか言われたところで
オイラのエスパー伊東も万能じゃないんで、それを説明して
もらわないことには助けることもできやしないので。

そういう点では、自分の書いた文章を赤の他人が読んで理解
できるか?と一度読み直してから投稿するといいと思う。
質問に限らず、どんなものでも他人に読ませるために書く文書っ
てのは多いから、今のうち勉強しておくと吉。

引用返信 編集キー/
■5336 / inTopicNo.4)  Re[2]: C#でCSVファイルを出力
□投稿者/ 2007新人 (3回)-(2007/07/10(Tue) 19:58:33)
No5334 (片桐 さん) に返信

csv.Append("\"" + DataSet.Table[idx].EMPID + "\"" + ",");
csv.Append("\"" + DataSet.Table[idx].EMPNAME + "\"" + ",");
csv.Append("\"" + DataSet.Table[idx].EMPFLAG + "\"" + "\n");

上記のように行いましたら、期待結果どおりになりました。

結果
"Emp001","山田太郎",0改行
"Emp002","山田次郎",0改行
"Emp003","山田三郎",0改行

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -