用Perl破坏生成的csv文件

时间:2016-01-13 11:47:26

标签: excel perl csv export-to-csv

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

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打开file时,我收到文件扩展名(csv)与文件格式/结构不匹配的消息。 我被问到我是否信任来源。点击“确定”之后'我收到有错误的信息。我再次点击“确定”。之后我可以看到csv标题加上文件的唯一一行。一切看起来都像预期的那样。

我的问题:为什么我会收到打开文件的错误信息?我创建的文件有什么问题?

1 个答案:

答案 0 :(得分:3)

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