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

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

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

CSVファイルの出力結果について


(過去ログ 8 を表示中)

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

■7931 / inTopicNo.1)  CSVファイルの出力結果について
  
□投稿者/ くし&しも 二等兵(8回)-(2006/10/31(Tue) 02:00:52)

分類:[C#] 


分類:[C#] 

いつもお世話になります。
CSVファイルの出力結果についてご質問があります。
例えば以下のようにバッファのデータをCSVファイルに書き出すとします。

string path = "C:\Work\output.csv";
string sBuffer = "";
string sDate = "2006/06/11";
string sCode = "00123";

sBuffer = "日付," + sDate + ",コード," + sCode
StreamWriter writer
  = new StreamWriter(path,false,Encoding.GetEncoding("Shift_JIS"));
writer.Write(sBuffer);
writer.Close();

結果:sDate の部分は2006/6/11、sCode の部分は123と出力されてしまいます。

1.そこで2006/06/11や00123と出力されるためには、sBuffer の部分をどのように編集すればよいでしょうか?

2.もう1つ質問があり、例えば以下のようにstrName自体にカンマが含まれる場合はどのようにsBuffer を編集すればよいでしょうか?
  string strName = "ライ,オン";
  sBuffer = "名前," + strName

恐れ入りますがどなたかご教授の程よろしく御願い致します。


0
引用返信 編集キー/
■7934 / inTopicNo.2)  Re[1]: CSVファイルの出力結果について
□投稿者/ 魔界の仮面弁士 少佐(199回)-(2006/10/31(Tue) 08:24:26)

分類:[C#] 

No7931に返信(くし&しも さんの記事)
> 結果:sDate の部分は2006/6/11、sCode の部分は123と出力されてしまいます。
そんな事は無いでしょう。
元データは string 型で、それを単純に連結しただけですし。

開いた CSV ファイルを、『メモ帳』で確認されましたか?
Excel で開いたりはしていませんよね?

もしも Excel で開くのであれば、各セルのデータ型を決める必要があるので、
Excel の「テキスト ファイル ウィザード」を使わなければいけません。

http://www.relief.jp/itnote/archives/001687.php
http://www.relief.jp/itnote/archives/000839.php


> 2.もう1つ質問があり、例えば以下のようにstrName自体にカンマが含まれる場合はどのようにsBuffer を編集すればよいでしょうか?
RFC 4180 によれば、カンマを含むデータは、ダブルクォーテーションで
囲むべき(should)だとされています。
http://www.kasai.fm/wiki/rfc4180jp

ですが、CSV の仕様は厳密に定められている分けではないので、ソフトによっては
そのようなデータを正しく処理できない場合も少なくありません。

その CSV を、どのようなソフトで利用するのかを検討した上で、ソフト側の
対応に合わせた CSV を吐くのがよろしいかと。


なお Excel では、両端をダブルコーテーションで囲ったタイプの
CSV データも正しく処理できます。(ちなみにセル内改行は LF です)

0
引用返信 編集キー/
■8013 / inTopicNo.3)  Re[2]: CSVファイルの出力結果について
□投稿者/ くし&しも 二等兵(12回)-(2006/11/02(Thu) 11:51:29)

分類:[C#] 

No7934に返信(魔界の仮面弁士さんの記事)
> ■No7931に返信(くし&しも さんの記事)
>>結果:sDate の部分は2006/6/11、sCode の部分は123と出力されてしまいます。
> そんな事は無いでしょう。
> 元データは string 型で、それを単純に連結しただけですし。
>
> 開いた CSV ファイルを、『メモ帳』で確認されましたか?
> Excel で開いたりはしていませんよね?
>
> もしも Excel で開くのであれば、各セルのデータ型を決める必要があるので、
> Excel の「テキスト ファイル ウィザード」を使わなければいけません。
>
> http://www.relief.jp/itnote/archives/001687.php
> http://www.relief.jp/itnote/archives/000839.php
>
>
>>2.もう1つ質問があり、例えば以下のようにstrName自体にカンマが含まれる場合はどのようにsBuffer を編集すればよいでしょうか?
> RFC 4180 によれば、カンマを含むデータは、ダブルクォーテーションで
> 囲むべき(should)だとされています。
> http://www.kasai.fm/wiki/rfc4180jp
>
> ですが、CSV の仕様は厳密に定められている分けではないので、ソフトによっては
> そのようなデータを正しく処理できない場合も少なくありません。
>
> その CSV を、どのようなソフトで利用するのかを検討した上で、ソフト側の
> 対応に合わせた CSV を吐くのがよろしいかと。
>
>
> なお Excel では、両端をダブルコーテーションで囲ったタイプの
> CSV データも正しく処理できます。(ちなみにセル内改行は LF です)

解決済み
引用返信 編集キー/
■8018 / inTopicNo.4)  Re[3]: CSVファイルの出力結果について
□投稿者/ επιστημη 中将(270回)-(2006/11/02(Thu) 14:23:23)
επιστημη さんの Web サイト

分類:[C#] 

丸ごと引用して[解決]てのはあまりに無礼だ。

0
引用返信 編集キー/
■8020 / inTopicNo.5)  Re[4]: CSVファイルの出力結果について
□投稿者/ ぽぴ王子 曹長(80回)-(2006/11/02(Thu) 14:38:18)
ぽぴ王子 さんの Web サイト

分類:[C#] 

No8018に返信(επιστημηさんの記事)
> 丸ごと引用して[解決]てのはあまりに無礼だ。

確かに。
自分の投稿を引用したなら「ああ、解決チェック付けたかったんだな」と
好意的に解釈もできますけど(それでもどうやって解決したのかは説明
してもらえると嬉しい)魔界の仮面弁士さんの投稿をそのまま引用って
そりゃないなーとか思ったり思わなかったり(どっちなんだ)。

> 結果:sDate の部分は2006/6/11、sCode の部分は123と出力されてしまいます。

これってやっぱりExcelで開いたんでしょうかね。普通にダブルクリック
すると、Excelがインストールされていたらそっちで開いちゃいますし。

0
引用返信 編集キー/
■8036 / inTopicNo.6)  Re[5]: CSVファイルの出力結果について
□投稿者/ くし&しも 二等兵(13回)-(2006/11/02(Thu) 18:36:57)

分類:[C#] 

魔界の仮面弁士さん!まず誤ります。
皆さんにご指摘していただいたとおり、解決して頂いたのにもかかわらず、解決までの過程が説明不足でした。

どのように解決したかまず説明します。
最初は書き出す文字列をダブルコーテーションを囲まずに.csvの拡張子でファイルを出力していました。.csvはExcelと関連づけされているためにこのファイルを開いても「テキストファイルウィザード」は表示されません。その結果「00011」というようなのコードが「11」となっていたり、「ああ,いう」といういようなカンマが含まれる文字列もダブルコーテーションでくくったとしても「ああ」「いう」というように分割されてしまいます。

よって、「.csv」ではなく「.txt」のファイルとして出力し、エクセルを起動しメニューから「ファイル」メニューから「開く」を選択し、「ファイルの種類」を「.CSV」にし出力したファイルを開くようにしました。その結果「テキストファイルウィザード」が開き、そのウィザードにしたっがて進めると自分の意図した内容になりました。

魔界の仮面弁士さん!
また何かご質問がありましたらよろしくお願いします。
また気に障ることがありましらたご指摘ください!

これからもよろしくお願いします。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -