Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question: Hello All, I have two excel files containing 58000 and 30000 entries respectively. I want to find out how many entries of file_1 are present in file_2. I have written below program but it is taking days to execute, Can anyone have better solution?

#Modules to use use Cwd 'abs_path'; use Win32::OLE; use Win32::OLE qw(in with); use Win32::OLE::Const "Microsoft Excel"; $Win32::OLE::Warn = 3; my $start_run = time(); print"[USAGE]: <demoscript.pl> <.map file path> <Ouput excel path>\n"; print"[INFO]: Executing demoscript.pl V1.0.1.\n"; #Global Variables my @longNames; my $SystemPortTracingReport = $ARGV[0]; my $CLEA_Family = $ARGV[1]; my $GlobalB_HighFeature = $ARGV[2]; my $Excel =Win32::OLE->new('Excel.Application'); # Open Excel file my $Book = $Excel->Workbooks->Open($SystemPortTracingReport); my $Book2 = $Excel->Workbooks->Open($CLEA_Family); #Make Excel visible $Excel->{Visible} = 1; my $Sheet = $Book->Worksheets("GlobalB_HighFeature"); my $Sheet2 = $Book2->Worksheets("GlobalB_HighFeature_SerialDataR"); my $longNamecol; my $Signalcolumn; for($i=1; $i<30;$i++) { if($Sheet->Cells($startingrow, $i)->{'Value'} eq "Long Name") { $longNamecol = $i; } } for($i=1; $i<30;$i++) { if($Sheet2->Cells($startingrow, $i)->{'Value'} eq "Long Name") { $Signalcolumn = $i; } } print"\n$longNamecol\n"; print"\n$Signalcolumn\n"; my $emptyline=0; for(my $k=2; $k<521754; $k++) { if($Sheet->Cells($k,$longNamecol)->{'Value'} eq "") { $emptyline++; } else { push(@longNames, $Sheet->Cells($k,$longNamecol)->{'Value'} +); # my $temp = $Sheet->Cells($k,$longNamecol)->{'Value'}; # print"\n $temp"; $count++; } } my $data; my $length; $length = scalar(@longNames); print"Length $length"; print"Searching...........\n"; $Book->Save; #Or $Book->SaveAs("C:\\file_name.xls"); $Book->Close; #or $Excel->Quit; for(my $m=0; $m<$length; $m++) { for(my $l=2; $l<2990; $l++) { if($Sheet2->Cells($l,$Signalcolumn)->{'Value'} eq "") { next; } else { if($Sheet2->Cells($l,$Signalcolumn)->{'Value'} eq $longNam +es[$m]) { $Sheet2->Cells($l,100)->{'Value'} = "matched"; print"\n***********Matched*************\n"; } } } } print"\n**********finished!**************\n"; #Save Excel file $Book2->Save; #Or $Book->SaveAs("C:\\file_name.xls"); $Book2->Close; #or $Excel->Quit; my $end_run = time(); my $run_time = $end_run - $start_run; print"\n[INFO]Timetaken: $run_time [Secs]";

In reply to Xls reader by sainky

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.