2016-01-13 64 views
1

我用perl模块Text::CSV_XS创建了一个csv文件。 下面是相关代码:用Perl生成的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)不将文件的格式/结构相匹配的消息打开file。 我被问到如果我信任源。点击“确定”后,我收到有错误的信息。再次点击“确定”。之后,我可以看到csv标题加上文件的唯一行。一切看起来都如预期。

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

回答

3

当您打开Excel中前2个字符为“ID”的文本文件时,它认为它是SYLK文件,因此会发出此警告。这是Excel的一个非常古老的问题。例如,请参见this Microsoft Support page。如果您将报价放在ID左右或更改其大小写,该错误将消失。

+0

就是这样,谢谢你的回答 – Thariama