--- fudge 2012-10-08 02:22:09.312500000 -0700
+++ fudge2 2012-10-08 02:22:06.140625000 -0700
@@ -70,222 +70,17 @@
#Extract the necessary information from the rows and columns and places them in three arrays @right @legal and @prod
foreach my $row ( 1 .. $Tot_Rows ) {
- foreach my $col (1) {
-
- # skip empty cells
- next unless defined $Sheet->Cells( $row, $col )->{'Value'};
- $val = $Sheet->Cells( $row, $col )->{'Value'};
-
- if ( $val =~ /^\d{10}$/ ) {
-
- #Gets column one information
- foreach my $col1 (1) {
- next
- unless
- defined $Sheet->Cells( $row, $col1 )->{'Value'};
- $c1 = $Sheet->Cells( $row, $col1 )->{'Value'};
- push @right, $c1;
- push @legal, $c1;
- push @prod, $c1;
-
- #Gets region from column 2
- foreach my $col4 (4) {
- next
- unless
- defined $Sheet->Cells( $row, $col4 )->{'Value'};
- $c4 = $Sheet->Cells( $row, $col4 )->{'Value'};
- push @right, $c4;
- push @legal, $c4;
- push @prod, $c4;
- }
-
- #Gets column 3 information
- foreach my $col5 (5) {
- next
- unless
- defined $Sheet->Cells( $row, $col5 )->{'Value'};
- $c5 = $Sheet->Cells( $row, $col5 )->{'Value'};
- push @right, $c5;
- push @legal, $c5;
- push @prod, $c5;
- }
-
- #Get the description that needs to be processed later
- foreach my $col6 (6) {
- next
- unless
- defined $Sheet->Cells( $row, $col6 )->{'Value'};
- $c6 = $Sheet->Cells( $row, $col6 )->{'Value'};
- push @legal, $c6;
- }
-
- #Gets area
- foreach my $col7 (7) {
- next
- unless
- defined $Sheet->Cells( $row, $col7 )->{'Value'};
- $c7 = $Sheet->Cells( $row, $col7 )->{'Value'};
- push @right, $c7;
-
- }
-
- #Gets column 8 information
- foreach my $col8 (8) {
- next
- unless
- defined $Sheet->Cells( $row, $col8 )->{'Value'};
- $c8 = $Sheet->Cells( $row, $col8 )->{'Value'};
- push @right, $c8;
- }
-
- #Gets column 9
- foreach my $col9 (9) {
- next
- unless
- defined $Sheet->Cells( $row, $col9 )->{'Value'};
- $c9 = $Sheet->Cells( $row, $col9 )->{'Value'};
- push @right, $c9;
- }
-
- #and so on....
- foreach my $col10 (10) {
- next
- unless
- defined $Sheet->Cells( $row, $col10 )->{'Value'};
- $c10 = $Sheet->Cells( $row, $col10 )->{'Value'};
- push @right, $c10;
- push @legal, $c10;
- }
-
- #same
- foreach my $col11 (11) {
- next
- unless
- defined $Sheet->Cells( $row, $col11 )->{'Value'};
- $c11 = $Sheet->Cells( $row, $col11 )->{'Value'};
- push @right, $c11;
- push @legal, $c11;
- }
-
- #same
- foreach my $col12 (12) {
- $c12 = $Sheet->Cells( $row, $col12 )->{'Value'};
- push @right, $c12;
- push @prod, $c12;
- }
-
- #same
- foreach my $col13 (13) {
- $c13 = $Sheet->Cells( $row, $col13 )->{'Value'};
- push @prod, $c13;
- }
-
- #same
- foreach my $col14 (14) {
- $c14 = $Sheet->Cells( $row, $col14 )->{'Value'};
- push @prod, $c14;
- }
-
- #same
- foreach my $col15 (15) {
- $c15 = $Sheet->Cells( $row, $col15 )->{'Value'};
- push @prod, $c15;
+ if( my $firstCol = eval {
+ $Sheet->Cells( $row, $col )->{'Value'}
}
+ ){
- #same
- foreach my $col17 (17) {
- $c17 = $Sheet->Cells( $row, $col17 )->{'Value'};
- push @prod, $c17;
- }
-
- #same
- foreach my $col18 (18) {
- $c18 = $Sheet->Cells( $row, $col18 )->{'Value'};
- push @prod, $c18;
- }
-
- #same
- foreach my $col20 (20) {
- $c20 = $Sheet->Cells( $row, $col20 )->{'Value'};
- push @prod, $c20;
- }
-
- #same
- foreach my $col21 (21) {
- $c21 = $Sheet->Cells( $row, $col21 )->{'Value'};
- push @prod, $c21;
- }
+ if ( $firstCol =~ /^\d{10}$/ ) {
+ push @right, $firstCol;
+ push @legal, $firstCol;
+ push @prod, $firstCol;
- #same
- foreach my $col22 (22) {
- $c22 = $Sheet->Cells( $row, $col22 )->{'Value'};
- push @prod, $c22;
- }
-
- #same
- foreach my $col23 (23) {
- $c23 = $Sheet->Cells( $row, $col23 )->{'Value'};
- push @prod, $c23;
- }
-
- #same
- foreach my $col24 (24) {
- $c24 = $Sheet->Cells( $row, $col24 )->{'Value'};
- push @prod, $c24;
- }
-
- #same
- foreach my $col25 (25) {
- $c25 = $Sheet->Cells( $row, $col25 )->{'Value'};
- push @prod, $c25;
- }
- #same
- foreach my $col26 (26) {
- $c26 = $Sheet->Cells( $row, $col26 )->{'Value'};
- push @prod, $c26;
- }
-
- #same
- foreach my $col27 (27) {
- $c27 = $Sheet->Cells( $row, $col27 )->{'Value'};
- push @prod, $c27;
- }
-
- #32-39 production data
- foreach my $col32 (32) {
- $c32 = $Sheet->Cells( $row, $col32 )->{'Value'};
- push @prod, $c32;
- }
- foreach my $col33 (33) {
- $c33 = $Sheet->Cells( $row, $col33 )->{'Value'};
- push @prod, $c33;
- }
- foreach my $col34 (34) {
- $c34 = $Sheet->Cells( $row, $col34 )->{'Value'};
- push @prod, $c34;
- }
- foreach my $col35 (35) {
- $c35 = $Sheet->Cells( $row, $col35 )->{'Value'};
- push @prod, $c35;
- }
- foreach my $col36 (36) {
- $c36 = $Sheet->Cells( $row, $col36 )->{'Value'};
- push @prod, $c36;
- }
- foreach my $col37 (37) {
- $c37 = $Sheet->Cells( $row, $col37 )->{'Value'};
- push @prod, $c37;
- }
- foreach my $col38 (38) {
- $c38 = $Sheet->Cells( $row, $col38 )->{'Value'};
- push @prod, $c38;
- }
- foreach my $col39 (39) {
- $c39 = $Sheet->Cells( $row, $col39 )->{'Value'};
- push @prod, $c39;
- }
- }
}
}
}
####
--- fudge2 2012-10-08 02:22:06.140625000 -0700
+++ fudge3 2012-10-08 02:22:02.328125000 -0700
@@ -80,6 +80,178 @@
push @legal, $firstCol;
push @prod, $firstCol;
+ #Gets region from column 2
+ if ( my $val = eval { $Sheet->Cells( $row, 4 )->{Value} } ) {
+
+ push @right, $val;
+ push @legal, $val;
+ push @prod, $val;
+ }
+
+ #Gets column 3 information
+ if ( my $val = eval { $Sheet->Cells( $row, 5 )->{Value} } ) {
+
+ push @right, $val;
+ push @legal, $val;
+ push @prod, $val;
+ }
+
+ #Get the description that needs to be processed later
+ if ( my $val = eval { $Sheet->Cells( $row, 6 )->{Value} } ) {
+
+ push @legal, $val;
+ }
+
+ #Gets area
+ if ( my $val = eval { $Sheet->Cells( $row, 7 )->{Value} } ) {
+
+ push @right, $val;
+
+ }
+
+ #Gets column 8 information
+ if ( my $val = eval { $Sheet->Cells( $row, 8 )->{Value} } ) {
+
+ push @right, $val;
+ }
+
+ #Gets column 9
+ if ( my $val = eval { $Sheet->Cells( $row, 9 )->{Value} } ) {
+
+ push @right, $val;
+ }
+
+ #and so on....
+ if ( my $val = eval { $Sheet->Cells( $row, 10 )->{Value} } ) {
+
+ push @right, $val;
+ push @legal, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 11 )->{Value} } ) {
+
+ push @right, $val;
+ push @legal, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 12 )->{Value} } ) {
+
+ push @right, $val;
+ push @prod, $val;
+ }
+
+ if ( my $val = eval { $Sheet->Cells( $row, 13 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 14 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 15 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 17 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 18 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 20 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 21 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 22 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 23 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 24 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 25 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 26 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #same
+ if ( my $val = eval { $Sheet->Cells( $row, 27 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+
+ #32-39 production data
+ if ( my $val = eval { $Sheet->Cells( $row, 32 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 33 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 34 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 35 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 36 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 37 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 38 )->{Value} } ) {
+
+ push @prod, $val;
+ }
+ if ( my $val = eval { $Sheet->Cells( $row, 39 )->{Value} } ) {
+
+ push @prod, $val;
+ }
}
}
##
##
--- fudge3 2012-10-08 02:22:02.328125000 -0700
+++ fudge4 2012-10-08 02:21:58.968750000 -0700
@@ -142,115 +142,11 @@
push @prod, $val;
}
- if ( my $val = eval { $Sheet->Cells( $row, 13 )->{Value} } ) {
+ for my $col ( qw{ 13 14 15 17 18 20 21 22 23 24 25 26 27 32 39 32 33 34 35 36 37 38 39 }){
+ if ( my $val = eval { $Sheet->Cells( $row, $col )->{Value} } ) {
push @prod, $val;
}
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 14 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 15 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 17 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 18 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 20 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 21 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 22 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 23 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 24 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 25 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 26 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 27 )->{Value} } ) {
-
- push @prod, $val;
- }
-
- #32-39 production data
- if ( my $val = eval { $Sheet->Cells( $row, 32 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 33 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 34 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 35 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 36 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 37 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 38 )->{Value} } ) {
-
- push @prod, $val;
- }
- if ( my $val = eval { $Sheet->Cells( $row, 39 )->{Value} } ) {
-
- push @prod, $val;
}
}
##
##
--- fudge4 2012-10-08 02:21:58.968750000 -0700
+++ fudge5 2012-10-08 02:21:55.468750000 -0700
@@ -143,12 +143,21 @@
}
- for my $col ( qw{ 13 14 15 17 18 20 21 22 23 24 25 26 27 32 39 32 33 34 35 36 37 38 39 }){
+ for my $col (
+ qw{
+ 13 14 15
+ 17 18
+ 20 21 22 23 24 25 26 27
+ 32 33 34 35 36 37 38 39
+ }
+ )
+ {
if ( my $val = eval { $Sheet->Cells( $row, $col )->{Value} } ) {
push @prod, $val;
}
}
+
}
}
}
##
##
--- fudge5 2012-10-08 02:21:55.468750000 -0700
+++ fudge6 2012-10-08 01:27:35.187500000 -0700
@@ -80,83 +80,52 @@
push @legal, $firstCol;
push @prod, $firstCol;
- #Gets region from column 2
- if ( my $val = eval { $Sheet->Cells( $row, 4 )->{Value} } ) {
-
- push @right, $val;
- push @legal, $val;
- push @prod, $val;
- }
-
- #Gets column 3 information
- if ( my $val = eval { $Sheet->Cells( $row, 5 )->{Value} } ) {
-
- push @right, $val;
- push @legal, $val;
- push @prod, $val;
- }
-
- #Get the description that needs to be processed later
- if ( my $val = eval { $Sheet->Cells( $row, 6 )->{Value} } ) {
-
- push @legal, $val;
- }
-
- #Gets area
- if ( my $val = eval { $Sheet->Cells( $row, 7 )->{Value} } ) {
-
- push @right, $val;
-
- }
-
- #Gets column 8 information
- if ( my $val = eval { $Sheet->Cells( $row, 8 )->{Value} } ) {
-
- push @right, $val;
- }
-
- #Gets column 9
- if ( my $val = eval { $Sheet->Cells( $row, 9 )->{Value} } ) {
-
- push @right, $val;
- }
-
- #and so on....
- if ( my $val = eval { $Sheet->Cells( $row, 10 )->{Value} } ) {
-
- push @right, $val;
- push @legal, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 11 )->{Value} } ) {
-
- push @right, $val;
- push @legal, $val;
- }
-
- #same
- if ( my $val = eval { $Sheet->Cells( $row, 12 )->{Value} } ) {
-
- push @right, $val;
- push @prod, $val;
- }
-
-
- for my $col (
- qw{
+ ValueTargetCols(
+ $Sheet,
+ [ \@right, \@legal, \@prod, ],
+ [ $row ],
+ [ qw{ 4 5 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ \@legal, ],
+ [ $row ],
+ [ qw{ 6 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ \@right, ],
+ [ $row ],
+ [ qw{ 7 8 9 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ \@right, \@legal, ],
+ [ $row ],
+ [ qw{ 10 11 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ \@prod, \@right, ],
+ [ $row ],
+ [ qw{ 12 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ \@prod ],
+ [ $row ],
+ [ qw{
13 14 15
17 18
20 21 22 23 24 25 26 27
32 33 34 35 36 37 38 39
- }
- )
- {
- if ( my $val = eval { $Sheet->Cells( $row, $col )->{Value} } ) {
- push @prod, $val;
- }
- }
-
+ } ],
+ );
}
}
@@ -377,4 +346,20 @@
+
+sub ValueTargetCols {
+ my( $sheet, $targets, $row, $cols ) = @_;
+ for my $col ( @$cols )
+ {
+ for my $row( @$rows )
+ {
+ if ( my $val = eval { $sheet->Cells( $row, $col )->{Value} } ) {
+ for my $target ( @$targets ){
+ push @{$target}, $val;
+ }
+ }
+ }
+ }
+ return;
+}
__END__
##
##
--- fudge6 2012-10-08 01:27:35.187500000 -0700
+++ fudge7 2012-10-08 01:40:55.031250000 -0700
@@ -9,7 +9,7 @@
use Win32::OLE::Variant;
use Win32::OLE::NLS qw(:LOCALE :DATE);
use List::MoreUtils qw(natatime);
-use Excel::Writer::XLSX;
+#~ use Excel::Writer::XLSX;
############################################################
@@ -69,13 +69,11 @@
my $Tot_Cols = $Sheet->UsedRange->Columns->{'Count'};
#Extract the necessary information from the rows and columns and places them in three arrays @right @legal and @prod
- foreach my $row ( 1 .. $Tot_Rows ) {
- if( my $firstCol = eval {
- $Sheet->Cells( $row, $col )->{'Value'}
- }
- ){
- if ( $firstCol =~ /^\d{10}$/ ) {
+ if( my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} }
+ and $firstCol =~ /^\d{10}$/
+ )
+ {
push @right, $firstCol;
push @legal, $firstCol;
push @prod, $firstCol;
@@ -83,42 +81,42 @@
ValueTargetCols(
$Sheet,
[ \@right, \@legal, \@prod, ],
- [ $row ],
+ [ 1 .. $Tot_Rows ],
[ qw{ 4 5 } ],
);
ValueTargetCols(
$Sheet,
[ \@legal, ],
- [ $row ],
+ [ 1 .. $Tot_Rows ],
[ qw{ 6 } ],
);
ValueTargetCols(
$Sheet,
[ \@right, ],
- [ $row ],
+ [ 1 .. $Tot_Rows ],
[ qw{ 7 8 9 } ],
);
ValueTargetCols(
$Sheet,
[ \@right, \@legal, ],
- [ $row ],
+ [ 1 .. $Tot_Rows ],
[ qw{ 10 11 } ],
);
ValueTargetCols(
$Sheet,
[ \@prod, \@right, ],
- [ $row ],
+ [ 1 .. $Tot_Rows ],
[ qw{ 12 } ],
);
ValueTargetCols(
$Sheet,
[ \@prod ],
- [ $row ],
+ [ 1 .. $Tot_Rows ],
[ qw{
13 14 15
17 18
@@ -130,7 +128,6 @@
}
}
}
- }
$Book->Close;
}
##
##
--- fudge7 2012-10-08 01:40:55.031250000 -0700
+++ fudge8 2012-10-08 01:47:28.906250000 -0700
@@ -5,7 +5,7 @@
use strict;
use warnings;
use Win32::OLE qw(in with);
-use Win32::OLE::Const 'Microsoft Excel';
+#~ use Win32::OLE::Const 'Microsoft Excel';
use Win32::OLE::Variant;
use Win32::OLE::NLS qw(:LOCALE :DATE);
use List::MoreUtils qw(natatime);
@@ -37,7 +37,6 @@
my $counti; #used to count the excelfiles
my $usefile; #The file that is being used
my @recID; #an array of ID's for the worksheets
-my $ID; #The actual ID being pushed to the array
my $val; #A test value that is used to test whether a row should be included
my @right
; #The first of the arrays that will be filled during the process and will be further disected later
@@ -59,20 +58,16 @@
#####Work on each sheet in the workbook
#####This is the number of worksheets in the workbook
my $sheetcnt = $Book->Worksheets->Count();
- foreach my $r (1) {
- my $Sheet = $Book->Worksheets($r);
- $ID = $Sheet->{Name};
- push @recID, $ID;
+#~ foreach my $r (1) {
+ {
+ my $Sheet = $Book->Worksheets( 1 );
+ push @recID, $Sheet->{Name};
print "Worksheet name is $Sheet->{Name}\n";
- ##work on each row and column
my $Tot_Rows = $Sheet->UsedRange->Rows->{'Count'};
my $Tot_Cols = $Sheet->UsedRange->Columns->{'Count'};
+ my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} }
-#Extract the necessary information from the rows and columns and places them in three arrays @right @legal and @prod
-
- if( my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} }
- and $firstCol =~ /^\d{10}$/
- )
+ if( defined $firstCol and $firstCol =~ /^\d{10}$/ )
{
push @right, $firstCol;
push @legal, $firstCol;
@@ -127,7 +122,6 @@
}
}
- }
$Book->Close;
}
@@ -345,7 +339,7 @@
sub ValueTargetCols {
- my( $sheet, $targets, $row, $cols ) = @_;
+ my( $sheet, $targets, $rows, $cols ) = @_;
for my $col ( @$cols )
{
for my $row( @$rows )
##
##
--- fudge8 2012-10-08 01:47:28.906250000 -0700
+++ fudge9 2012-10-08 01:48:45.046875000 -0700
@@ -55,17 +55,15 @@
print "$workfile\n";
my $Book = $Excel->Workbooks->Open($workfile);
-#####Work on each sheet in the workbook
-#####This is the number of worksheets in the workbook
my $sheetcnt = $Book->Worksheets->Count();
-#~ foreach my $r (1) {
+#~ foreach my $r ( 1 .. $sheetcnt ) {
{
my $Sheet = $Book->Worksheets( 1 );
push @recID, $Sheet->{Name};
print "Worksheet name is $Sheet->{Name}\n";
my $Tot_Rows = $Sheet->UsedRange->Rows->{'Count'};
my $Tot_Cols = $Sheet->UsedRange->Columns->{'Count'};
- my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} }
+ my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} };
if( defined $firstCol and $firstCol =~ /^\d{10}$/ )
{
##
##
--- fudge9 2012-10-08 01:48:45.046875000 -0700
+++ fudge10 2012-10-08 02:23:20.609375000 -0700
@@ -53,74 +53,13 @@
###This points to the folder where the excel files are placed
my $workfile = "C:/Users/McLovin/Documents/Thesis/Datatal/" . "$usefile";
print "$workfile\n";
- my $Book = $Excel->Workbooks->Open($workfile);
-
- my $sheetcnt = $Book->Worksheets->Count();
-#~ foreach my $r ( 1 .. $sheetcnt ) {
- {
- my $Sheet = $Book->Worksheets( 1 );
- push @recID, $Sheet->{Name};
- print "Worksheet name is $Sheet->{Name}\n";
- my $Tot_Rows = $Sheet->UsedRange->Rows->{'Count'};
- my $Tot_Cols = $Sheet->UsedRange->Columns->{'Count'};
- my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} };
-
- if( defined $firstCol and $firstCol =~ /^\d{10}$/ )
- {
- push @right, $firstCol;
- push @legal, $firstCol;
- push @prod, $firstCol;
-
- ValueTargetCols(
- $Sheet,
- [ \@right, \@legal, \@prod, ],
- [ 1 .. $Tot_Rows ],
- [ qw{ 4 5 } ],
- );
- ValueTargetCols(
- $Sheet,
- [ \@legal, ],
- [ 1 .. $Tot_Rows ],
- [ qw{ 6 } ],
- );
- ValueTargetCols(
- $Sheet,
- [ \@right, ],
- [ 1 .. $Tot_Rows ],
- [ qw{ 7 8 9 } ],
+ BlahBlahNameHere(
+ $Excel,
+ $workfile,
+ \@recID, \@right, \@legal, \@prod,
);
-
- ValueTargetCols(
- $Sheet,
- [ \@right, \@legal, ],
- [ 1 .. $Tot_Rows ],
- [ qw{ 10 11 } ],
- );
-
- ValueTargetCols(
- $Sheet,
- [ \@prod, \@right, ],
- [ 1 .. $Tot_Rows ],
- [ qw{ 12 } ],
- );
-
- ValueTargetCols(
- $Sheet,
- [ \@prod ],
- [ 1 .. $Tot_Rows ],
- [ qw{
- 13 14 15
- 17 18
- 20 21 22 23 24 25 26 27
- 32 33 34 35 36 37 38 39
- } ],
- );
-
- }
- }
- $Book->Close;
}
################################################################################
@@ -351,4 +290,78 @@
}
return;
}
+
+
+
+sub BlahBlahNameHere {
+ my( $Excel, $workfile, $recID, $right, $legal, $prod ) = @_;
+ my $Book = $Excel->Workbooks->Open($workfile);
+
+ my $sheetcnt = $Book->Worksheets->Count();
+#~ foreach my $r ( 1 .. $sheetcnt ) {
+ {
+ my $Sheet = $Book->Worksheets( 1 );
+ push @$recID, $Sheet->{Name};
+ print "Worksheet name is $Sheet->{Name}\n";
+ my $Tot_Rows = $Sheet->UsedRange->Rows->{'Count'};
+ my $Tot_Cols = $Sheet->UsedRange->Columns->{'Count'};
+ my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} };
+
+ if( defined $firstCol and $firstCol =~ /^\d{10}$/ )
+ {
+ push @$right, $firstCol;
+ push @$legal, $firstCol;
+ push @$prod, $firstCol;
+
+ ValueTargetCols(
+ $Sheet,
+ [ $right, $legal, $prod, ],
+ [ 1 .. $Tot_Rows ],
+ [ qw{ 4 5 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ $legal, ],
+ [ 1 .. $Tot_Rows ],
+ [ qw{ 6 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ $right, ],
+ [ 1 .. $Tot_Rows ],
+ [ qw{ 7 8 9 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ $right, $legal, ],
+ [ 1 .. $Tot_Rows ],
+ [ qw{ 10 11 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ $prod, $right, ],
+ [ 1 .. $Tot_Rows ],
+ [ qw{ 12 } ],
+ );
+
+ ValueTargetCols(
+ $Sheet,
+ [ $prod ],
+ [ 1 .. $Tot_Rows ],
+ [ qw{
+ 13 14 15
+ 17 18
+ 20 21 22 23 24 25 26 27
+ 32 33 34 35 36 37 38 39
+ } ],
+ );
+
+ }
+ }
+ $Book->Close;
+}
__END__
##
##
#!C:\strawberry\perl\bin\perl
####Load Packages
use strict;
use warnings;
use Win32::OLE qw(in with);
#~ use Win32::OLE::Const 'Microsoft Excel';
use Win32::OLE::Variant;
use Win32::OLE::NLS qw(:LOCALE :DATE);
use List::MoreUtils qw(natatime);
#~ use Excel::Writer::XLSX;
############################################################
####Initialize Excel Object and Count Files to Process
$Win32::OLE::Warn = 3; #die on errors...
#get already active Excel application or open new
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new( 'Excel.Application', 'Quit' );
#Get the file names of the production files and prints a status of the results
my $ProdDirect = 'C:/Users/McLovin/Documents/Thesis/Data/';
opendir DH, $ProdDirect or die "Cannot open $ProdDirect: $!";
my @files = grep { !-d } readdir DH;
print "@files\n";
closedir DH;
my $NumberofFiles = @files;
print "Number of files is: $NumberofFiles\n";
################################################################################
#################################################################
################Start Processing the Data########################
#################################################################
my $counti; #used to count the excelfiles
my $usefile; #The file that is being used
my @recID; #an array of ID's for the worksheets
my $val; #A test value that is used to test whether a row should be included
my @right
; #The first of the arrays that will be filled during the process and will be further disected later
my @prod; #The second array, same as above
my @legal; #The third
#####Loop over all the files
for ( $counti = 0 ; $counti < $NumberofFiles ; $counti++ ) {
##### open Excel file -- This is the input data files
print "Working on file $counti of $NumberofFiles\n";
$usefile = $files[$counti];
###This points to the folder where the excel files are placed
my $workfile = "C:/Users/McLovin/Documents/Thesis/Datatal/" . "$usefile";
print "$workfile\n";
BlahBlahNameHere(
$Excel,
$workfile,
\@recID, \@right, \@legal, \@prod,
);
}
################################################################################
#Prints of the created arrays
#print "@right\n";
#print "@legal\n";
#print "@prod\n";
################################################################################
####################################################################################
#the process that eliminates duplicates in the @right array based on criteria
#makes a copy of the array as it is destroyed in the next while statement, This is maybe one of the problems
my @rig = @right; #copy of array
my @righ; # a new array that is the result of the while statement below
my %seen; # a hash that stores agreementnumbers for unique entries
#The array is in exact sets of 9 strings and i want it spliced a intervals of exactly those intervals
while ( my ( $m, $n, $o, $p, $q, $r, $s, $t, $y ) = splice( @right, 0, 9 ) ) {
last if $m !~ /^\d{10}$/;
next if $seen{$m}++;
if ( $n =~ /Specific_region/ ) {
if ( $o =~ /NG/ ) {
push @righ, $m, $o, $p, $q, $r, $s, $t;
}
}
}
# print "@righ\n";
my @leg; #an array that holds the result for the next while statement
my @spli; #used as a container for certain entries in the while statement
my @joi; #another middle of equation array for picking up results
%seen = ()
; #emties the previous hash as the uniqueness of entries is also important here
my @tes; #yet another array for picking up results
################################################################################
#the process that insures that each returned value is printed in the correct
#form and coupled with the ten digit number
#again the array is organized in 6 values in a row that need to be seperated out into rows.
while ( my ( $h, $aa, $rr, $j, $k, $l ) = splice( @legal, 0, 6 ) ) {
last if $h !~ /^\d{10}$/;
if ( $aa =~ /Specific_region/ ) {
if ( $rr =~ /NG/ ) {
if ( $j =~ /\n/ ) {
next if $seen{$h}++;
my @spli = split( /\n/, $j );
foreach my $n (@spli) {
if ( $n =~ /LSD/ ) {
my @tes = split( /LSD/, $n );
foreach my $lon (@tes) {
if ( $lon =~ /SEC/ ) {
my @joi = split( /-|W|:|\s|,|\(/, $lon );
my $chans = @joi;
my $eleg =
join( "", @joi[ 0, 2, 1, $chans - 1 ] );
push @leg, $eleg, $h, $k, $l;
}
}
}
elsif ( $n =~ /\(/ ) {
my @joi = split( /-|W|:|\s|\(/, $n );
my $chans = @joi;
my $eleg = join( "", @joi[ 0, 2, 1, $chans - 2 ] );
push @leg, $eleg, $h, $k, $l;
}
else {
my @joi = split( /-|W|:|\s/, $n );
my $chans = @joi;
my $eleg = join( "", @joi[ 0, 2, 1, $chans - 1 ] );
push @leg, $eleg, $h, $k, $l;
}
}
}
else {
next if $seen{$h}++;
my @joi = split( /-|W|:|\s/, $j );
my $chans = @joi;
my $eleg = join( "", @joi[ 0, 2, 1, $chans - 1 ] );
push @leg, $eleg, $h, $k, $l;
}
}
}
}
#print "@leg\n";
my @peg;
foreach my $loma (@leg) {
if ( $loma =~ /^\d{7}$/ ) {
substr( $loma, 6, 0, 0 );
push @peg, $loma;
}
else {
push @peg, $loma;
}
}
####################################################################################
#the process that creates the production array for the entries
my @produ;
while (
my (
$cp, $aaa, $rrr, $dp, $ep, $fp, $gp, $hp, $ip,
$jp, $kp, $lp, $mp, $np, $op, $pp, $qp, $rp,
$sp, $tp, $up, $vp, $wp, $yp, $xp
)
= splice( @prod, 0, 25 )
)
{
last if $cp !~ /^\d{10}$/;
if ( $aaa =~ /Specific_region/ ) {
if ( $rrr =~ /NG/ ) {
unless (
$dp =~ /a specific repeated text for all relevant entries/ )
{
#eliminate this if statement for option two, where entries with no actual production is included
if ( defined($qp) && $qp =~ /\d\d-\d\d-\d{4}/ ) {
push @produ, $dp, $ep, $cp, $fp, $gp, $hp, $ip, $jp, $kp,
$lp, $mp, $np, $op, $pp, $qp, $rp, $sp, $tp, $up, $vp,
$wp, $yp, $xp;
}
}
}
}
}
# print "@produ\n";
my @nwells; #an array that collects the results
#creates the 4.2 entries "agreements with no wells
while ( my ( $mn, $nn, $on, $pn, $qn, $rn, $sn, $tn, $yn ) =
splice( @rig, 0, 9 ) )
{
last if $mn !~ /^\d{10}$/;
if ( $nn =~ /Specific_region/ ) {
if ( $on =~ /NG/ ) {
if ( $yn =~ /a specific repeated text for all relevant entries/ ) {
push @nwells, $mn, $on, $pn, $qn, $rn, $sn, $tn, $yn;
}
}
}
}
# print "@nwells\n";
#Places results into arrays of arrays for easy computation in excel. uses natatime again the arrays
# are of a specific size. per row.
my @AAR;
{
my $iter = natatime 7, @righ;
while ( my @tmp = $iter->() ) {
push @AAR, \@tmp;
}
}
my @BAR;
{
my $iter = natatime 4, @peg;
while ( my @tmp = $iter->() ) {
push @BAR, \@tmp;
}
}
my @CAR;
{
my $iter = natatime 23, @produ;
while ( my @tmp = $iter->() ) {
push @CAR, \@tmp;
}
}
my @DAR;
{
my $iter = natatime 8, @nwells;
while ( my @tmp = $iter->() ) {
push @DAR, \@tmp;
}
}
#####The new excel sheets that should contain the results
my $workbooknew = Excel::Writer::XLSX->new('re1.xlsx');
my $worksheetnew = $workbooknew->add_worksheet();
$worksheetnew->keep_leading_zeros();
$worksheetnew->set_column( 'A:G', 30 );
$worksheetnew->write_col( 'A2', \@AAR );
####This is the data on the legalnumber - introduce keep_leading zeroes for correct legal form
my $workbooknew1 = Excel::Writer::XLSX->new('re2.xlsx');
my $worksheetnew1 = $workbooknew1->add_worksheet();
$worksheetnew1->keep_leading_zeros();
$worksheetnew1->set_column( 'A:D', 15 );
$worksheetnew1->write_col( 'A2', \@BAR );
# # ####This is the data on the production of the wells - introduce keep_leading zeroes for correct legal form
my $workbooknew2 = Excel::Writer::XLSX->new('re3.xlsx');
my $worksheetnew2 = $workbooknew2->add_worksheet();
my $worksheetnew3 = $workbooknew2->add_worksheet();
$worksheetnew2->set_column( 'A:W', 50 );
$worksheetnew2->write_col( 'A2', \@CAR );
$worksheetnew3->set_column( 'A:H', 30 );
$worksheetnew3->write_col( 'A2', \@DAR );
sub ValueTargetCols {
my( $sheet, $targets, $rows, $cols ) = @_;
for my $col ( @$cols )
{
for my $row( @$rows )
{
if ( my $val = eval { $sheet->Cells( $row, $col )->{Value} } ) {
for my $target ( @$targets ){
push @{$target}, $val;
}
}
}
}
return;
}
sub BlahBlahNameHere {
my( $Excel, $workfile, $recID, $right, $legal, $prod ) = @_;
my $Book = $Excel->Workbooks->Open($workfile);
my $sheetcnt = $Book->Worksheets->Count();
#~ foreach my $r ( 1 .. $sheetcnt ) {
{
my $Sheet = $Book->Worksheets( 1 );
push @$recID, $Sheet->{Name};
print "Worksheet name is $Sheet->{Name}\n";
my $Tot_Rows = $Sheet->UsedRange->Rows->{'Count'};
my $Tot_Cols = $Sheet->UsedRange->Columns->{'Count'};
my $firstCol = eval { $Sheet->Cells( 1, 1)->{'Value'} };
if( defined $firstCol and $firstCol =~ /^\d{10}$/ )
{
push @$right, $firstCol;
push @$legal, $firstCol;
push @$prod, $firstCol;
ValueTargetCols(
$Sheet,
[ $right, $legal, $prod, ],
[ 1 .. $Tot_Rows ],
[ qw{ 4 5 } ],
);
ValueTargetCols(
$Sheet,
[ $legal, ],
[ 1 .. $Tot_Rows ],
[ qw{ 6 } ],
);
ValueTargetCols(
$Sheet,
[ $right, ],
[ 1 .. $Tot_Rows ],
[ qw{ 7 8 9 } ],
);
ValueTargetCols(
$Sheet,
[ $right, $legal, ],
[ 1 .. $Tot_Rows ],
[ qw{ 10 11 } ],
);
ValueTargetCols(
$Sheet,
[ $prod, $right, ],
[ 1 .. $Tot_Rows ],
[ qw{ 12 } ],
);
ValueTargetCols(
$Sheet,
[ $prod ],
[ 1 .. $Tot_Rows ],
[ qw{
13 14 15
17 18
20 21 22 23 24 25 26 27
32 33 34 35 36 37 38 39
} ],
);
}
}
$Book->Close;
}
__END__