#! perl -w use strict; use Win32::OLE; use Win32::OLE::Const "Microsoft Excel"; require "C:/perl/lib/ctime.pl"; my $TAIL="c:/make/unix/usr/local/wbin/tail"; my $index=0; # assign a temp filename my $tmpfile="c:/tmp/$$"; unlink($tmpfile) if -e $tmpfile; # Where is input coming from? tab delimited my $datafile="z:/dir/dir2"; # How many points to plot? my $datapoints=24; # Extract last $datapoints lines from $datafile to a plotfile system("$TAIL -$datapoints $datafile > $tmpfile.data"); # Open up our data file for writing open(DATAFILE,"<$tmpfile.data"); my @Fld=(); my $row = 1; my $Excel = Win32::OLE->new("Excel.Application"); $Excel->{Visible} = 0; my $Book = $Excel->Workbooks->Add; my $Sheet = $Book->Worksheets(1); my $Range = $Sheet->Range("A1:E1"); $Range->{Value} = ['Time', 'Barometer', 'Temperature','Dew Point','Barometer']; $Range = $Sheet->Range("A2:E2"); # add data to excel while () { chomp; # Split on single tab @Fld = split('\t', $_); $Range->{Value} = \@Fld; $row++; $Range = $Sheet->Range("A$row:E$row"); } $Range = $Sheet->Range("A1:A$datapoints,E1:E$datapoints"); my $Chart = $Excel->Charts->Add; $Chart->{ChartType} = xlXYScatterLines; $Chart->SetSourceData({Source => $Range, PlotBy => xlColumns}); $Chart->{HasTitle} = 1; $Chart->ChartTitle->{Text} = "Barometric Pressure Over Last 24 Hours (inHg)"; $Chart->ChartTitle->{Font}->{Size} = 20; $Chart->ChartTitle->{Font}->{Bold} = 1; $Chart->{HasLegend} = 1; $Chart->Legend->{Position} = xlBottom; # Configure the X axis. if( my $Axis = $Chart->Axes( xlCategory ) ) { $Axis->{HasMajorGridlines} = 1; $Axis->{MajorUnit} = .25; $Axis->{TickLabels}->{NumberFormat} = "h:mm"; } # Configure the Y axis. if( my $Axis = $Chart->Axes( xlValue ) ) { $Axis->{HasMajorGridlines} = 1; $Axis->{MajorGridlines}->{Border}->{Weight} = 1; $Axis->{MajorGridlines}->{Border}->{ColorIndex} = 48; $Axis->{MajorGridlines}->{Border}->{LineStyle} = xlContinuous; $Axis->{TickLabels}->{Font}->{Bold} = 1; $Axis->{TickLabels}->{Font}->{Size} = 16; } $Chart->SeriesCollection(1)->{MarkerStyle} = xlNone; $Chart->SeriesCollection(1)->{Border}->{Weight} = xlMedium; $Chart->SeriesCollection(1)->{Smooth} = 1; $Chart->PlotArea->Border->{LineStyle} = xlContinuous; $Chart->PlotArea->Border->{ColorIndex} = 41; $Chart->PlotArea->Interior->{Colorindex} = 2; $Chart->ChartArea->Interior->{Colorindex} = 41; my $File = "W:/pressure/presschart.gif"; $Chart->Export( $File, "GIF", 0 ); $Excel->ActiveWorkbook->Close(0); $Excel->Quit; close DATAFILE;