用 Perl 生成的 csv 文件损坏

csv file generated with Perl broken

我使用 perl 模块 Text::CSV_XS 创建了一个 csv 文件。 这是相关代码:

open (my $csv_fh, '>', $tmp_file) or die("Unable to open CSV '$tmp_file' for write");

my $csv = Text::CSV_XS->new({'binary' => 1, 'sep_char' => $config->{'csv'}->{'sep_char'}, 'eol' => "52"}) or die(Text::CSV->error_diag());

$csv->print($csv_fh, ["ID", "ASEITE", "ERDAT", "QUELLE", "AUSGABE", "RESSORT", "AUTNR", "NAME", "ANZHLZEIL", "ANZHLZEICH", "UEBER", "TEXTSP", "ART", "BETRAG", "GRUND", "FEST", "STATUS", "SLEVEL"]);

$csv->print($csv_fh, ["A","1","AB","A-5","01","12345","12345","NAME","0","0","Testtext","Testtext2","1","45","","","0",""]);

close $csv_fh;

当我尝试使用 Microsoft Excel 打开 file 时,我收到消息说文件扩展名 (csv) 与文件的 format/structure 不匹配。 有人问我是否信任消息来源。单击 'ok' 后,我收到错误信息。我再次单击 'ok'。之后我可以看到 csv 标题加上文件的唯一行。一切看起来都符合预期。

我的问题:为什么我在打开文件时收到此错误消息?我创建的文件有什么问题?

当您打开一个前 2 个字符在 Excel 中为 "ID" 的文本文件时,它认为这是一个 SYLK 文件,因此会发出此警告。这是 Excel 的一个非常老的问题。例如,参见 this Microsoft Support page。如果您在 ID 周围加上引号或更改其大小写,错误将消失。