Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re^2: Win32::OLE::Const 'Microsoft Excel'

by rupesh (Hermit)
on Dec 06, 2004 at 10:51 UTC ( #412618=note: print w/replies, xml ) Need Help??

in reply to Re: Win32::OLE::Const 'Microsoft Excel'
in thread Win32::OLE::Const 'Microsoft Excel'

Thanks for your post. Although I'm now able to format the color-context of the Chart, I'm facing a new problem now.

I have a worksheet that has data dynamically entered to it, in the form of tables (2 columns and 'n' rows). 25 - 35 such tables are possible in a single sheet.

A part of my code:
$column=1; foreach my $dept (sort keys %every_dept) { $row=1; $Sheet->Cells($row++,$column)->{Value} = $dept; foreach (@{$every_dept{$dept}}) { $Sheet->Cells($row,$column)->{Value} = $_; $Sheet->Cells($row,$column+1)->{Value} = <some-val>; + $row++; #my $range = 'b'.$y; #$Sheet->Range($range)->Interior->{ColorIndex} =$y; #$Sheet->Range($range)->{Value} = $y; } $column+=2; }
How do I draw separate charts for each table? I tried various loops, but I get charts which are totally irrelevant to the data.

Any ideas/solutions?


Replies are listed 'Best First'.
Re^3: Win32::OLE::Const 'Microsoft Excel'
by maa (Pilgrim) on Dec 06, 2004 at 14:28 UTC

    If you can figure out how to build your charts you can iterate over them using:

    #my $ChartObjects=$Sheet->ChartObjects(); foreach my $c (in $Sheet->ChartObjects() ) { #match the $c->Charttitle.Text property against some list? #There is a $c->{CodeName} property too... #Store $Chart->{Name} at creation and check against that? }

    To make it easier you could try storing your tables in a format such as:

    COLA  | COLB | COLC | COLD | COLE | COLF | COLG | ...
    Label | Data |      | Label| Data |      |...
    item  | item |      | item | item |      |...
    item  | item |      | item | item |      |...
    item  | item |      | item | item |      |...
    item  | item |      | item | item |      |...
          |      |      |      |      |      | <blank row>
    Title | txt  |      |      
    Name  | $Chart->{Name}
    Blah  |      |      |

    Bad diagram... so you have all your tables separated by a column... under your data table is another table with metadata (name, title, xaxis text, y axis text... (cold just be a column)

    You know your chart regions start in A1, C1, E1, etc so you select that cell when building and do a Range("E1")->CurrentRegion->Rows->Countto return the number of rows... +2 takes you to the row where your meta data is... you can then either use RANGE("E9") (or whatever) to assign the properties to the chart making it easy to update (not dynamically though) or save info about the chart.

    I confused myself there - perhaps it'll help you though.

    - Mark

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2023-10-02 21:27 GMT
Find Nodes?
    Voting Booth?

    No recent polls found