使用Perl重写现有的xls文件

使用Perl重写现有的xls文件,perl,excel,file-handling,xlsx,Perl,Excel,File Handling,Xlsx,我试图在已经存在的excel文件中写入数据,但我尝试的代码是创建一个新的工作表并用数据擦除旧的工作表。这就是我使用的代码 #!/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 works

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

#!/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");    `   
#/usr/bin/perl–w
严格使用;
使用电子表格::WriteExcel;
#创建新的Excel文件
我的$FileName='Report.xls';
my$workbook=电子表格::WriteExcel->new($FileName);
#添加工作表
我的$worksheet1=$workbook->添加工作表()#set_列(0,0,20);
#编写格式化和未格式化的字符串、行和列
#符号。
$worksheet1->write(0,0,“你好”);
$worksheet1->写入(1,0,“HI”);
$worksheet1->write(2,0,“1”);
$worksheet1->write(3,0,“2”);`
如何将当前工作表分配给
$worksheet1
。还有一件事,我需要读取已经存在的特定单元格。
请给我一些指导。谢谢你

你不能用打开现有的电子表格并像那样更新它。首先,您需要将其与使用
WriteExcel
打开的输出表一起打开。然后,读取输入文件,写出现有单元格、工作表等,并进行任何编辑/更新/插入。然后,您可以关闭这两个文件,删除以前的文件,并重命名新文件(可以选择备份以前的版本)

您只能真正编辑/更改给定的Excel文件,而无需通过使用打开它来完成此过程,但为此,您肯定需要在Windows系统上(我不确定Wine的状态),而这不是您希望在服务器上执行的操作

您可以考虑使用
Spreadsheet::WriteExcel
创建一个文件,就像使用
open my$fh'>',output.file'
打开一个文件一样<代码>输出。文件将被删除

请注意这一行:

电子表格::WriteExcel::工作簿->新建中

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