//データビューの読み込み for (int i = 0; i < view.Count ; i++) {
//DataRowViewの作成 DataRowView row = view[i];
//書き込み文字列作成 string str = ""; str = k + row["Key"].ToString() + k + "," + k + row["Code"].ToString() + k + "," + k + row["Name"].ToString().Trim() + k ;
// 1 行書き込み ClsEncording cle = new ClsEncording(); writer.WriteLine(cle.ConvertToShiftJis(str)); }
分類:[.NET]
お世話になっております。
【やりたいこと】
MDBから読み込んだデータをCSVファイルにして出力したい。
【問題点】
出力されたファイルを、メモ帳で確認すると望んだように出力されているのですが、
ダブルクリックでエクセルで開くと、日本語が文字化けしている。
【対応】
UniCode←→Shift-JISの問題かと思い、エンコード用のクラスを作成し、コード変換をしてみたのですが、結果は同じでした。
以下にコードを添付しますので、何がいけないのか、何が足りないのか、おわかりになる方がいらっしゃったらお教えください。よろしくお願いいたします。
---------------------------------------------------------------------------
//エクスポートファイルの取得
System.IO.FileStream fs = null;
System.IO.StreamWriter writer = null;
fs = System.IO.File.Open(strFilePath, System.IO.FileMode.Create);
writer = new System.IO.StreamWriter(fs);
string k=@""""; //区切り文字列
//データビューの読み込み
for (int i = 0; i < view.Count ; i++)
{
//DataRowViewの作成
DataRowView row = view[i];
//書き込み文字列作成
string str = "";
str = k + row["Key"].ToString() + k + ","
+ k + row["Code"].ToString() + k + ","
+ k + row["Name"].ToString().Trim() + k ;
// 1 行書き込み
ClsEncording cle = new ClsEncording();
writer.WriteLine(cle.ConvertToShiftJis(str));
}
//ClsEncordingクラス メソッド///////
public string ConvertToShiftJis(string str){
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
byte[] bytes = sjisEnc.GetBytes(str);
string strResult = sjisEnc.GetString(bytes);
return strResult;
}