人気ブログランキング | 話題のタグを見る
(.Net)DataGridViewからCSVエクスポート時に書式変更
DataGridViewで商品の売上情報を表示し、ボタン押下すると DataGridView.GetClipboardContent() を使ってCSVにエクスポートする仕組みを作っています。
DataGridViewの価格情報に関する列は DefaultCellStyle.Format = "c" と定義し、書式化された値で表示してます。

この状態で、DataGridView.GetClipboardContent() を使うと、書式化された値(例:¥1,000)が取得されてしまいます。

ですが、納品先からCSVエクスポート時は書式化されない方がいいという要望がありました。

クラスライブラリに便利なメソッドあるかと思って調べましたが、無いようです。

ということで下記の対処にしました。
//dgvは DataGridView を表す
 
//書式化を解除
dgv.Columns["Price"].DefaultCellStyle.Format = "g";
dgv.Columns["UnitPrice"].DefaultCellStyle.Format = "g";
 
//CSVデータを作成
dgv.SelectAll();
DataObject returnValue = dgv.GetClipboardContent();
 
//書式化を再指定
dgv.Columns["Price"].DefaultCellStyle.Format = "c";
dgv.Columns["UnitPrice"].DefaultCellStyle.Format = "c";
 
//CSV文字列取得
string strCsv = returnValue.GetText(TextDataFormat.CommaSeparatedValue);

一旦書式化を解除して、GetClipboardContent() 後に書式化を再指定する方法です。
無理やりてき感じがしますが、まぁとりあえずこれでしのぐことに。。

フォーマットの書式指定は下記を参照。
http://msdn.microsoft.com/ja-jp/library/dwhawy9k%28VS.80%29.aspx
by jehoshaphat | 2010-01-17 23:47 | .Net開発


<< Gumbler対策のi-FIL... Gumbler亜種がまん延 >>