[英]Perl Loop Output to Excel Spreadsheet
我有一個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。 輸入數據電子表格是兩列下的單詞列表,一列標記為“目標”,另一列標記為“響應”。 腳本會提取每個目標詞和每個響應詞,並計算它們之間的相關性值(即
$lesk->getRelatedness
代碼段正在執行。 它正在調用一個稱為WordNet :: Similarity的perl模塊,該模塊計算單詞之間的相關性。
所有這些工作都很好。 問題是我正在嘗試將輸出(此腳本中的相似度或$ value)寫入新的Excel文件中。 無論我對代碼做什么,它唯一能給我的輸出就是LAST目標詞與響應詞之間的相關性。 它忽略所有其余部分。
但是,這僅在我嘗試寫入Excel文件時發生。 如果我改用“打印”功能,則可以在命令窗口中看到所有輸出。 我總是可以僅將其復制並粘貼到Excel中,但是如果我可以自動化它會容易得多。 知道是什么問題嗎?
您每次將$ row的值重置為0。
問題解決了。 我只需要移動
my $workbook1 = Spreadsheet::WriteExcel->new('data.xls');
my $worksheet1 = $workbook1->add_worksheet();
行到腳本的另一部分。 由於它們位於“ for”語句中,因此程序每次通過循環時都會覆蓋“ data.xls”文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.