簡體   English   中英

Perl循環輸出到Excel電子表格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM