2014-02-14 292 views
1

轉換的.xls我的Perl腳本爲.csv將.xls文件轉換爲.csv文件?

use Spreadsheet::ParseExcel; 
my $xlsparser = Spreadsheet::ParseExcel->new(); 
my $xlsbook = $xlsparser->parse('/home/Admin/Downloads/abc.xls'); 
my $xls = $xlsbook->worksheet(0); 
my ($row_first, $row_last) = $xls->row_range(); 
my ($col_first, $col_last) = $xls->col_range(); 
my $csv = '/home/Admin/Downloads/ram.csv'; 
for my $row ($row_first .. $row_last) {  # Step through each row 
    for my $col ($col_first .. $col_last) { # Step through each column 
     my $cell = $xls->get_cell($row, $col); # Get the current cell 
     next unless $cell; 
     $csv .= $cell->unformatted(); # Get the cell's raw data -- no border 
            # colors or anything like that 
     if ($col == $col_last) { 
      $csv .= "\n"; 
     } else { 
      $csv .= ","; 
     } 
    } 
} 
open(my$FH ,'>',"$csv") or die "oops!"; 

while (my$line = <$xlsbook>){ 
    print $FH $line; 
} 

糟糕! at csv.pl line 23.

投擲錯誤。我的代碼有什麼問題?請在我的代碼中找到錯誤。 在此先感謝。

+0

$ CSV最初指向的路徑。那你爲什麼要將數據附加到變量上。當你打開文件(我的$ FH,'>',「$ csv」)或者死掉「oops!」時;它是否包含名稱或內容? – Raghuram

+0

它只包含內容 – Ram

+1

如果這個問題與[你以前的問題](http://stackoverflow.com/q/21771708/725418)(它似乎是)是相同的,你應該添加新的信息,而不是打開一個新的問題。其中一個問題可能因爲重複而擱置。 – TLP

回答

0

你有一個錯字:

open(my $FH ,'>',"$csv") or die "oops!"; 

使用嚴格和警告,你在編譯時得到警告。

use strict; 
use warnings; 

你有錯別字:

open(my $FH ,'>',$csv) or die "oops!"; 

while (my$line = <$FH>){ 

問候,

+0

我用'嚴格使用; 使用警告;'但仍然是相同的錯誤 – Ram