Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^12: Iterating Through Cell Blocks with Spreadsheet::Read

by Hammer2001 (Novice)
on Oct 09, 2013 at 04:38 UTC ( #1057479=note: print w/ replies, xml ) Need Help??


in reply to Re^11: Iterating Through Cell Blocks with Spreadsheet::Read
in thread Iterating Through Cell Blocks with Spreadsheet::Read

Here's the problem restated another way. Here's a script to read Excel XLSX cell values using Spreadsheet::Read:

#!/usr/bin/perl -w use warnings; use strict; use Spreadsheet::Read; my $name = ""; my $strain = ""; my $initdensity = ""; my $finaldensity = ""; my $avedensity = ""; my $book; my $sheet; my %sheet = (); $book = ReadData ($inbook); my @x = qw(F G H I J K); for my $sheet_index (1 .. $sheet_count) { $sheet = $book->[$sheet_index] or next; foreach (@x) { $name = $sheet{'F28'}; $strain = $sheet{'F29'}; $initdensity = $sheet{'F30'}; $finaldensity = $sheet{'F31'}; $avedensity = $sheet{'F32'}; print "Found sheet with label: $sheet{label}\n"; print "COL=$_ $name $strain $initdensity $finaldensity $avedens +ity\n"; } }
I need to after reading keys F28..F32 read G28..G32 through K28..K32. How can I key it on values from array @x?

Thanks, Hammer


Comment on Re^12: Iterating Through Cell Blocks with Spreadsheet::Read
Download Code
Replies are listed 'Best First'.
Re^13: Iterating Through Cell Blocks with Spreadsheet::Read
by AnomalousMonk (Abbot) on Oct 09, 2013 at 06:18 UTC

    I'm not at all familiar with Spreadsheet::Read (in fact, I'm not greatly familiar with spreadsheets in general), but the code you show seems close to being workable. Do this:

    • Get rid of the whole
          my %sheet = ();
      statement. In the code you show, it seems to be doing nothing more than confusing the heck out of you.
    • The  foreach (@x) { ... } loop seems OK for looping over the values of the  @x array, with the  $_ default scalar being "topicalized" to each column-name string in turn.
    • Form the cell name as has been discussed and access the cell within the  $sheet hash reference (I'm assuming this is a valid operation) using the  -> arrow operator, e.g.
          $name = $sheet->{"${_}28"};
      or perhaps
          $name = $sheet->{$_ . '28'};
    • Report results. Don't just say "it doesn't work", that's almost useless. Describe your expectations and report how the code fails to meet your expectations. Report exact warning or error messages.
    • Ponder the Basic debugging checklist.

    Good luck.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1057479]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (16)
As of 2015-07-31 17:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (279 votes), past polls