#!/usr/bin/perl use strict; use Excel::Writer::XLSX; my $strExcelFilename= 'chart.xlsx'; my $book = Excel::Writer::XLSX->new($strExcelFilename); my $format = $book->add_format(); my $sheet1 = $book->add_worksheet('Data'); my @header = ('User ID','Browser'); for my $col(0..$#header){ $sheet1->write(0,$col, $header[$col], $format); } my $row = 1; my %count=(); # browser count while () { chomp; next unless /\S/; my @f = split ';',$_; ++$count{$f[1]}; $sheet1->write_row($row++,0, \@f); } # add summary chart my $sheet2 = $book->add_worksheet('Summary'); $sheet2->write_row(0,0,['Browser','Count']); $row = 1; for (sort keys %count){ $sheet2->write_row($row++,0,[$_,$count{$_}]); } my $chart = $book->add_chart( type => 'column', embedded => 1 ); $chart->add_series( name => 'Count', categories => '=Summary!$A$2:$A$'.$row, values => '=Summary!$B$2:$B$'.$row, ); $chart->set_title ( name => 'Results of sample analysis' ); $chart->set_x_axis( name => 'Browser' ); $chart->set_y_axis( name => 'Count of Computer' ); $chart->set_style( 11 ); # add chart $sheet2->insert_chart( 'E2', $chart, 25, 10 ); $book->close(); __DATA__ user1;Chrome user2;IE11 user3;IE11 user4;Chrome user5;Firefox user6;IE11 user7;Safari