my @rows = Spreadsheet::Read::rows($book->[1]);
foreach my $i (1 .. scalar @rows) {
foreach my $j (1 .. scalar @{$rows[$i-1]}) {
say chr(64+$i) . " $j " . ($rows[$i-1][$j-1] // '');
}
}
####
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use feature 'say';
use Excel::Writer::XLSX;
use Spreadsheet::Read qw(ReadData);
my $workbook = Excel::Writer::XLSX->new( 'simple.xlsx' );
my $worksheet = $workbook->add_worksheet();
my @data_for_row = (1, 2, 3);
my @table = (
[4, 5],
[6, 7],
);
my @data_for_column = (10, 11, 12);
$worksheet->write( "A1", "Hi Excel!" );
$worksheet->write( "A2", "second row" );
$worksheet->write( "A3", \@data_for_row );
$worksheet->write( 4, 0, \@table );
$worksheet->write( 0, 4, [ \@data_for_column ] );
$workbook->close;
my $book = ReadData ('simple.xlsx');
my %hash;
my @rows = Spreadsheet::Read::rows($book->[1]);
foreach my $i (1 .. scalar @rows) {
foreach my $j (1 .. scalar @{$rows[$i-1]}) {
# say chr(64+$j) . "$i " . ($rows[$i-1][$j-1] // '');
$hash{chr(64+$j) . "$i "} = ($rows[$i-1][$j-1] // '');
}
}
print Dumper \%hash;
my ($key) = grep{ $hash{$_} eq 'second row' } keys %hash;
say "Column/row: " . $key;
__END__
$ perl excel.pl
$VAR1 = {
'C5 ' => '',
'D2 ' => '',
'B6 ' => 7,
'D6 ' => '',
'C3 ' => 3,
'E2 ' => 11,
'B5 ' => 6,
'B4 ' => '',
'B1 ' => '',
'C4 ' => '',
'A6 ' => 5,
'A5 ' => 4,
'D1 ' => '',
'A1 ' => 'Hi Excel!',
'D4 ' => '',
'B3 ' => 2,
'A3 ' => 1,
'A2 ' => 'second row',
'A4 ' => '',
'E3 ' => 12,
'E6 ' => '',
'C2 ' => '',
'E5 ' => '',
'C6 ' => '',
'C1 ' => '',
'E1 ' => 10,
'D5 ' => '',
'E4 ' => '',
'B2 ' => '',
'D3 ' => ''
};
Column/row: A2
####
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use feature 'say';
use Excel::Writer::XLSX;
use Spreadsheet::Read qw(ReadData);
my $workbook = Excel::Writer::XLSX->new( 'simple.xlsx' );
my $worksheet = $workbook->add_worksheet();
# Add and define a format
my $formatHeader = $workbook->add_format();
$formatHeader->set_bold();
$formatHeader->set_align( 'center' );
# Add and define a format
my $formatTable = $workbook->add_format();
$formatTable->set_align( 'center' );
my @data_for_row = ("Sales",
"Region",
"Sales Amount",
"% Commission",
"Commission Amount");
my @table = ( ["Joe", "Robert", "Michelle", "Erich", "Dafna", "Rob"],
["North", "South", "East", "West", "North", "South"],
[260, 660, 940, 410, 800, 900],
["10%", "15%", "15%", "12%", "15%", "15%"] );
$worksheet->write( "A1", \@data_for_row, $formatHeader );
$worksheet->write( 1, 0, \@table, $formatTable );
$workbook->close;
my $book = ReadData ('simple.xlsx');
my %hash;
my @rows = Spreadsheet::Read::rows($book->[1]);
foreach my $i (1 .. scalar @rows) {
foreach my $j (1 .. scalar @{$rows[$i-1]}) {
# say chr(64+$j) . "$i " . ($rows[$i-1][$j-1] // '');
$hash{chr(64+$j) . "$i "} = ($rows[$i-1][$j-1] // '');
}
}
print Dumper \%hash;
my ($key) = grep{ $hash{$_} eq 'Sales Amount' } keys %hash;
say "Column/row: " . $key . " Value: " . $hash{$key};
__END__
$ perl excel.pl
$VAR1 = {
'A7 ' => 'Rob',
'C5 ' => 410,
'C4 ' => 940,
'E5 ' => '',
'E2 ' => '',
'B7 ' => 'South',
'D6 ' => '15%',
'A2 ' => 'Joe',
'A5 ' => 'Erich',
'C7 ' => 900,
'B6 ' => 'North',
'C3 ' => 660,
'A6 ' => 'Dafna',
'B3 ' => 'South',
'E3 ' => '',
'D2 ' => '10%',
'B5 ' => 'West',
'A4 ' => 'Michelle',
'A1 ' => 'Sales',
'D7 ' => '15%',
'E1 ' => 'Commission Amount',
'B1 ' => 'Region',
'C1 ' => 'Sales Amount',
'D4 ' => '15%',
'D5 ' => '12%',
'E7 ' => '',
'A3 ' => 'Robert',
'B4 ' => 'East',
'B2 ' => 'North',
'C6 ' => 800,
'E4 ' => '',
'E6 ' => '',
'D3 ' => '15%',
'C2 ' => 260,
'D1 ' => '% Commission'
};
Column/row: C1 Value: Sales Amount