用Perl生成的csv文件损坏

我使用perl模块Text::CSV_XS创build了一个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' => "\015\012"}) 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打开文件时,我得到文件扩展名(csv)与文件的格式/结构不匹配的消息。 我被问到如果我相信源。 点击“确定”后,我收到有错误的信息。 再次点击“确定”。 之后,我可以看到csv标题加文件的唯一行。 一切看起来都如预期。

我的问题: 为什么我得到这个错误消息打开文件? 我创build的文件有什么问题?

当您在Excel中打开前2个字符为“ID”的文本文件时,它认为它是SYLK文件,因此会发出此警告。 这是Excel的一个非常古老的问题。 例如,请参阅此Microsoft支持页面 。 如果您将ID引号或更改大小写,错误将消失。