前提・実現したいこと
C#を使ってExcelファイルから文字(ひらがな+漢字)を取得し、csvファイルに書き出したものを文字化けせずにExcelで見れるようにしたい。
また、文字列が一行分あけてcsv書き込みされるので一行あかないようにしたい。
Excelファイル
A | B | C |
---|---|---|
みゆき | 123.3 | |
要 | 11.2 | |
ikeda | 22.5 |
発生している問題・エラーメッセージ
Excelで開くとひらがなと漢字で書いている部分が文字化けしてしまう。
CSVファイルをメモ帳でひらくとひらがなも文字列も正常に見れる。
Excelから読み込んで書き込んでいる部分とヘッダーの間に一行空いてしまう。
A | B | C |
---|---|---|
文字化け | 123.3 | |
文字化け | 11.2 | |
ikeda | 22.5 |
エラーメッセージ
該当のソースコード
C#
1//Excelデータの読込 2Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application(); 3Workbook wb = ExcelApp.Workbooks.Open(ExcelbookFileName); 4Worksheet ws1 = wb.Sheets[1]; 5ws1.Select(Type.Missing); 6int i; 7int n = 5; 8string[] name=new string[0]; 9string[] ID=new string[0]; 10for (i = 0; i < 10; i++) 11{ 12 Array.Resize(ref name,name.Length + 1); 13 Range range = ExcelApp.get_Range("A" + n, Type.Missing); 14 if (range != null) 15 { 16 var val = range.Value2; 17 name[name.Length - 1] = val; 18 } 19 20 Array.Resize(ref ID, ID.Length + 1); 21 Range range2 = ExcelApp.get_Range("C" + n, Type.Missing); 22 if (range2 != null) 23 { 24 var val2 = range2.Value2; 25 ID[ID.Length - 1] = val2; 26 } 27 n++; 28} 29wb.Close(); 30 31//CSVファイルを作成・書き込み 32string Path = @"C:\Users"; 33StreamWriter sw = new StreamWriter(Path); 34string[] s1 = { "Name", "", "ID" }; 35string s2 = string.Join(",", s1); 36sw.WriteLine(s2); 37sw.Close(); 38FileStream fs = new FileStream(Path,FileMode.Open,FileAccess.ReadWrite,FileShare.None); 39StreamReader sr = new StreamReader(fs); 40 StreamWriter sw2 = new StreamWriter(fs); 41string str = sr.ReadToEnd(); 42string[] s3 = {name[i], "", ID[i]}; 43string s4 = string.Join(",", s3); 44Str = str + "\n" + s4; 45fs.Position = 0; 46fs.SetLength(0); 47sw2.Write(str); 48sw2.Flush(); 49sr.Close();
試したこと
文字列のエンコードなど調べてみて試してみましたが何も変わりませんでした。
Excelから読み込んだ文字列をコンソールで表示してみましたが、正常に表示されました。
補足情報(FW/ツールのバージョンなど)
VisualStudio2015

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/18 07:32