in reply to Re: Copying data sets of varying size into excel using OLE
in thread Copying data sets of varying size into excel using OLE

Thanks Corion.

My data looks like this (an example from the web), is there a way to process the array data in the manner described (by matching cells with array elements)?

Thanks for the help.

my $range = $sheet -> Range("A2:C7");</p><p> $range -> { Value } = [['Delivered', 'En route', 'To be shipped'], [504, 102, 86], [670, 150, 174], [891, 261, 201], [1274, 471, 321], [1563, 536, 241]];

Code tags added by GrandFather

Replies are listed 'Best First'.
Re^3: Copying data sets of varying size into excel using OLE
by Corion (Patriarch) on Sep 08, 2010 at 17:59 UTC

    The two tasks needed for this are "Programming" and "Debugging". You will need to do both or hire somebody who will do both for you.

    If you actually want to do both yourself instead of spending money on hiring somebody, you might want to preview your post and inspect whether it renders well or not, and then read the Writeup Formatting Tips, especially the part where it says to "Put your code and data between <code>...</code> tags".

    Most likely, what you want to do can be done by using a loop. See perlsyn about loop structures.

Re^3: Copying data sets of varying size into excel using OLE
by dasgar (Priest) on Sep 08, 2010 at 18:14 UTC

    If I'm correct, I believe that $range->{Value} is expecting a scalar (think a single integer, a single string, etc.) and you're trying to feed it an array. Personally, I've never tried to dump an array of data into a range of more than one cell. I've always done a single value into a single cell. You'll probably have more success doing the same. In your case, you'll probably want to do a loop as Corion suggested.

      The example i'm asking about does contains loop structures, and i'm trying to parse out the array element by element into excel, 1 element per cell.

      Here's the code formatted correctly:

      foreach my $line (@$array) { for (my $row = 0; $row < (scalar(@$array)+1); $row++) { foreach my $element (@$line) { for (my $col = 0; $col < scalar(@$line); $col++) { $sheet -> Cells(($row+10),($col+1)) -> {Value} = @$element[$co +l]; } } } }

      The array to be passed contains 6 lines (arrays) of 3 elements each. I want to loop through the lines, parsing out each array into excel in turn. I *am* a beginner (I looked at Perl for the first time last week) so I apologize if this is a simplistic question, but would appreciate any useful insights into this as i've been unable to make this script work so far.

      Thanks, Joe

        And now that you have the method for formatting properly, you may want to register - join the Monastery -- and read more of the docs suggested above: both those about PM and those that document various functions and modules.