用Perl重写现有的xls文件

我正在尝试在已经存在的excel文件中写入数据,但是我尝试的代码是创build一个新工作表,并用数据擦除旧工作表。 这是我使用的代码

#!/usr/bin/perl –w use strict; use Spreadsheet::WriteExcel; # Create a new Excel file my $FileName = 'Report.xls'; my $workbook = Spreadsheet::WriteExcel->new($FileName); # Add a worksheet my $worksheet1 = $workbook->add_worksheet(); #<- My Doubt # Change width for only first column $worksheet1->set_column(0,0,20); # Write a formatted and unformatted string, row and column # notation. $worksheet1->write(0,0, "Hello"); $worksheet1->write(1,0,"HI"); $worksheet1->write(2,0,"1"); $worksheet1->write(3,0,"2"); ` 

我如何将当前$worksheet1分配给$worksheet1 。 还有一件事是我需要读取已经存在的特定单元格。 请给我一些指导。谢谢

您无法使用Spreadsheet :: WriteExcel打开现有的电子表格,并像这样更新它。 您首先要使用Spreadsheet :: ReadExcel以及用WriteExcel打开的输出表打开它。 然后,读取input文件,写出现有的单元格,工作表等,并进行编辑/更新/插入。 然后,您可以closures这两个文件,删除以前的文件,然后重命名新的文件(可select备份以前的版本)。

你只能真正编辑/改变一个给定的Excel文件,而不需要通过打开Win32 :: OLE来完成这个过程,但为此,你肯定会需要在Windows系统上(我不确定Wine),这不是你想在服务器上做的事情。

你可以考虑用Spreadsheet::WriteExcel创build一个文件,类似于open my $fh, '>', 'output.file'output.file 被破坏。

注意行:

 my $fh = FileHandle->new('>'. $self->{_filename}); 

Spreadsheet::WriteExcel::Workbook->new