use strict; use Win32::OLE; use Win32::OLE::Const 'Microsoft Excel'; use Win32::OLE qw(in with); use Win32::OLE::Variant; use Win32::OLE::NLS qw(:LOCALE :DATE); $Win32::OLE::Warn = 3; # Die on Errors. my $vttrue = Variant(VT_BOOL, 1); my $vtfalse = Variant(VT_BOOL, 0); my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); $Excel->{DisplayAlerts}=0; $Excel->{Visible} = 1; my $Book = $Excel->Workbooks->Add; my $Sheet = $Book->Worksheets(1); my $Range = $Sheet->Range("A2:C7"); $Range->{Value} = [['TIME', 'QUANTITY', 'PRICE'], ['10:00', 100, 15], ['11:00', 150, 10], ['12:00', 80, 10], ['13:00', 100, 20], ['14:00', 120, 15]]; my $Chart = $Excel->Charts->Add or die; $Chart->{ChartType} =xlLine ; my $series = 1; foreach my $col ("A".."C"){ $Chart->SeriesCollection->Add($Sheet->Range($col."2:".$col."7")); $Chart->SeriesCollection($series)->{Name}=$Sheet->Range($col."2")->{Value}; $series++; } $Chart->{HasTitle} = $vttrue; $Chart->ChartTitle->{Text} = "My Chart Title";