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