0

我正在尝试使用 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();  

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

4

1 回答 1

0

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

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

最后一件事 - 用于完整性检查 - 也使用LookIn => xlValues, 因为你不是在寻找公式。

于 2013-05-07T06:59:50.730 回答