Perl循环输出到Excel电子表格

我有一个Perl脚本,其相关位在下面发布。

# Pull values from cells ROW: for my $row ( $row_min + 1 .. $row_max ) { my $target_cell = $worksheet->get_cell( $row, $target_col); my $response_cell = $worksheet->get_cell( $row, $response_col); if ( defined $target_cell && defined $response_cell ) { my $target = $target_cell->value(); my $response = $response_cell->value(); # Determine relatedness my $value = $lesk->getRelatedness($target, $response); # Copy output to new Excel spreadhseet, 'data.xls' my $workbook1 = Spreadsheet::WriteExcel->new('data.xls'); my $worksheet1 = $workbook1->add_worksheet(); $worksheet1->set_column(0, 3, 18); my $row = 0; foreach ($target) { $row++; $worksheet1->write( $row, 0, "Target = $target\n"); $worksheet1->write( $row, 1, "Response = $response\n"); $worksheet1->write( $row, 2, "Relatedness = $value\n"); } } } 

该脚本使用Perl模块ParseExcel和WriteExcel。 input数据电子表格是两列下的单词列表,一列标记为“目标”,另一列标记为“响应”。 脚本取每个目标词和每个响应词,并计算它们之间的相关性的值(这是什么

 $lesk->getRelatedness 

代码段正在做。 它调用一个称为WordNet ::相似度的perl模块,计算词之间的相关性度量)。

所有这一切都很好。 问题是我正在尝试将输出(在这个脚本中的相似度或$值)写入一个新的Excel文件。 无论我如何处理代码,它的唯一输出是最后一个目标词和响应词之间的相关性。 它忽略了其余的一切。

但是,这只发生在我试图写入Excel文件时。 如果我使用“打印”function,我可以看到命令窗口中的所有输出。 我总是可以将其复制并粘贴到Excel中,但如果我可以自动执行此操作,则会更容易。 任何想法是什么问题?

您将每次将$ row的值重置为0。

问题解决了。 我只需要移动

 my $workbook1 = Spreadsheet::WriteExcel->new('data.xls'); my $worksheet1 = $workbook1->add_worksheet(); 

行到脚本的另一部分。 由于它们在“for”语句中,程序每次运行循环时都会覆盖“data.xls”文件。