簡體   English   中英

在perl中打開Excel文件並打印行數

[英]Open Excel file in perl and print row count

我正在使用Win32 :: OLE模塊打開一個Excel文件並獲取行數。 問題是,當我硬編碼excel文件路徑時,它工作正常,但是當我動態傳遞路徑時,它拋出一個錯誤,指出“無法正確引用的調用方法工作簿”。 請找到下面的示例代碼。

use OLE;
use Win32::OLE::Const 'Microsoft Excel';

my $xapp= Win32::OLE->GetActiveObject('Excel.Application')
            or do { Win32::OLE->new('Excel.Application', 'Quit')};
    $xapp->{'Visible'} = 0;
    my $file='excel.xlsx';
    my $fileName="c:/users/mujeeb/desktop/".$file;
    print $fileName;
    my $wkb = $xapp->Workbooks->Open($fileName); //here i am getting error coz i am passing dynamic fileName;
    my $wks = $wkb->Worksheets('Sheet1');
    my $Tot_Rows=$wks->UsedRange->Rows->{'Count'}; 
    print $Tot_Rows."\n";
    $xapp->close;

在文件名中使用反斜杠。

文件名已提供給excel,而excel無法理解正斜杠。 Perl不會轉換它們,因為Perl不知道字符串是文件。

您確定存在名為Open的方法嗎? 因為我在Win32::OLE的文檔中沒有看到它。 另外,您還必須添加use Win32::OLE; 在您的代碼中。

您可以使用以下代碼行將路徑更改為OLE的可讀路徑:

my $file='excel.xlsx';
my $fileName="c:/users/mujeeb/desktop/".$file;
$fileName=~s/[\/]/\\/g;
print $fileName;

輸出:

c:\\users\\mujeeb\\desktop\\excel.xlsx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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