おはようございます。
Delphi初心者です。
csvファイルを以下のように生成しました。
var
csvFile : TextFile;
result : String;
begin
AssignFile(csvFile, saveFile.Text + '.csv');
Rewrite(csvFile);
result := '050';
Write(csvFile, result);
result := ','; //カンマ
Write(csvFile, result);
result := '顧客コード';
Write(csvFile, result);
result := ','; //カンマ
Write(csvFile, result);
result := ’品名';
Writeln(csvFile, result);
CloseFile(csvFile);
すると、csvファイルをExcelで開くと 「05」が「5」になって表示されます。
ネットで探していると、Excel側の設定で修正は出来るようですが
csv生成側で「05」表示になるように出来ますでしょうか。
ご教授頂ければ幸いです。
サンプルが 050のようですが
050がExcel側で数値と捉えられると 50になります。
ダブルコーテーション囲みにすれば文字型として渡せるかも
result := '050';
↓
result := '"050"';
それでもダメならダブルクリック読み込みではなく
Excel側で csvを開く操作をするとオプションで細かく指定で来たと思います。
先頭に"'"(シングルクォート)を付ける、という方法でもいいかもしれません。
蛇足ですが、AssignFile/WriteFile/CloseFileを使っているのはなぜでしょう?もし理由がないのであれば、TStringListを使うことをお勧めします。
System.Classes.TStringList - RAD Studio API Documentation
http://docwiki.embarcadero.com/Libraries/Sydney/ja/System.Classes.TStringList
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.Add('''050'); // 文字列の中では'を2つ重ねる
SL.Add('顧客コード');
SL.Add('品名');
SL.SaveToFile(saveFile.Text + '.csv',TEncoding.ANSI);
finally
SL.Free;
end;
end;
takeさん、HFUKUSHIさん ご回答ありがとうございました。
ご指導通りコーディングしたところ
Excelで0が表示されました。
ツイート | ![]() |