Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中使用OLE在excel中查找具有匹配字符串的精确单元格_Perl_Excel_Ole - Fatal编程技术网

如何在perl中使用OLE在excel中查找具有匹配字符串的精确单元格

如何在perl中使用OLE在excel中查找具有匹配字符串的精确单元格,perl,excel,ole,Perl,Excel,Ole,我正在尝试使用find命令在excel工作表中查找精确的字符串。 我成功地找到了有字符串的单元格,问题是 给定精确的字符串,我找不到匹配的单元格 该场景解释如下: 情景: 具有以下值的Excel表格 C1(值):ABCD D1(值):ABCDEFABCD 输入搜索字符串:ABCD 预期值:3(C) 产出:4(D) 下面是我使用的代码: use Win32::OLE; use Win32::OLE qw(in with); use Win32::OLE::Variant; use Win32::O

我正在尝试使用find命令在excel工作表中查找精确的字符串。 我成功地找到了有字符串的单元格,问题是 给定精确的字符串,我找不到匹配的单元格

该场景解释如下:

情景: 具有以下值的Excel表格

C1(值):ABCD

D1(值):ABCDEFABCD

输入搜索字符串:ABCD

预期值:3(C)

产出:4(D)

下面是我使用的代码:

use Win32::OLE;
use Win32::OLE qw(in with);
use Win32::OLE::Variant;
use Win32::OLE::Const 'Microsoft Excel';

$Excel = Win32::OLE->new('Excel.Application');
$Excel->{'Visible'} = 0;        #0 is hidden, 1 is visible
$Excel->{DisplayAlerts}=0;  #0 is hide alerts

# Open File and Worksheet
my $Book = $Excel->Workbooks->Open ('D:\\all_files.csv'); # open Excel file
$Sheet = $Book->Worksheets(1);

# Find Last Column and Row
$search_string = "ABCD";

my $Row_index = $Sheet->UsedRange->Find({What=>$search_string,
    SearchDirection=>xlPrevious,
    SearchOrder=>xlByRows})->{Row};

$Book->Close();
$Excel->Quit();  

请帮我克服这个困难。提前感谢。

添加标志
LookAt=>xlWhole
,因为它匹配整个字符串

另外,您为什么决定使用
xlPrevious


最后一件事-为了进行合理性检查-也使用
LookIn=>xlValues
,因为您不是在寻找公式。

是否有任何代码可以在excel中找到字符串的精确位置?正如我建议的,只需在:
$Sheet->UsedRange->find中添加标志
LookAt=>xlother
({What=>$search\u string,SearchDirection=>xlPrevious,SearchOrder=>xlByRows})