【问题标题】:csv file generated with Perl broken使用 Perl 生成的 csv 文件已损坏
【发布时间】:2016-04-18 09:09:24
【问题描述】:

我使用 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' => "\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 标题加上文件的唯一行。一切看起来都符合预期。

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

【问题讨论】:

    标签: excel perl csv export-to-csv


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多