打开perl中的Excel文件并打印行数

我正在使用Win32 :: OLE模块打开Excel文件并获得行数。 问题是,当我硬代码的Excel文件path工作正常,但是当我dynamic传递path,它会抛出一个错误,说:“不能调用方法工作簿上的参考”。 请find下面的示例代码。

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不知道这个string是一个文件。

你确定存在一个名为Open的方法吗? 因为我没有在Win32::OLE的文档中看到它。 你也必须添加use Win32::OLE; 在你的代码中。

您可以使用以下代码行将path更改为OLE的可读path:

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

输出:

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