【问题标题】:File error on opening spreadsheet created with Spreadsheet::WriteExcel打开使用 Spreadsheet::WriteExcel 创建的电子表格时出现文件错误
【发布时间】:2015-06-24 03:32:59
【问题描述】:

我使用 Spreadsheet::WriteExcel 使用 perl 创建 xls 文件。当电子表格的范围增加时,Microsoft excel 在打开文件之前会显示警告“文件错误:数据可能已丢失”。

请帮我解决这个问题。

这里是代码

my $row = 2;
foreach my $sid(array of students objects)
{
        my $s = $students->{$sid};
    my $cc = 0;
my $wall = f1($x, $y, $z);#f1 is a method returns hash of arrays that have to write on excel having keys @key_array
foreach my $key (@key_array) {
my $t_row = $row;
my $i_c = 0;
my $t_col = 0;
my $m_row = $max_row;
while($m_row > 0){
    $t_col = 3+($cc*7);
    if($cc == 0){
    $ws->write($t_row, 0,
                [$s->{first_name}, $s->{last_name}, $s->{l_name}], $fmt_wrap    
            );
    }
    if(defined $wall->{$key}->[$i_c] ){
    $ws->write($t_row, $t_col, $wall->{$key}->[$i_c], $fmt_wrap);
    } else {
    $ws->write($t_row, (3+$cc*7),["","","","","","",""], $fmt_wrap);                
    }
    $t_row++;
    $i_c++;
    $m_row--;
 }#while loop
    $ws->write($t_row-1, 3+$company_format*$max_step,
                [ (scalar keys %{$s->{videos}}), $s->{total_pageviews} ], $fmt
            );
 $cc++;
 $t_row = 2;
}#foreach loop
$row+=$max_row;
}#foreach student array

【问题讨论】:

  • 需要更多才能回答。请参阅How to Ask 了解有关如何组合可回答问题的一些提示。
  • 请出示您的代码。
  • @Jens 感谢您的回复。我已经添加了我编辑过的部分代码。在生成的电子表格工作正常之前。它在 Libre Office Calc 中工作,这是一个很好的 linux 软件。问题在于 Microsoft Excel。修改后的代码只增加了 BP 的列数。

标签: excel perl


【解决方案1】:

我找到了答案。在代码中有一行多次将数据写入一个单元格。所以我发现对特定单元格的多次写入尝试会导致文件损坏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多