4 use lib "__INSTALLDIR__/lib";
8 use Spreadsheet::WriteExcel;
9 use POSIX qw/strftime/;
11 my $xls_file = '/tmp/report.xls';
13 my $workbook = Spreadsheet::WriteExcel->new($xls_file) || die "can't write to $xls_file: $!";
45 =Y##/U##,sizeExistRatio
48 my $date_format = $workbook->add_format(num_format => 'yyyy-mm-dd hh:mm:ss');
49 my $duration_format = $workbook->add_format(num_format => 'hh:mm:ss');
50 my $header_format = $workbook->add_format(color => 'gray');
51 my $pcnt_format = $workbook->add_format(num_format => '0.0%');
52 my $size_format = $workbook->add_format(num_format => '#0');
55 duration => $duration_format,
56 sizeNewRatio => $pcnt_format,
57 sizeExistRatio => $pcnt_format,
59 sizeNew => $size_format,
60 sizeExist => $size_format,
61 sizeNewComp => $size_format,
62 sizeExistComp => $size_format,
65 my $bpc = BackupPC::Lib->new || die;
66 my %Conf = $bpc->Conf();
67 my $TopDir = $bpc->TopDir();
69 my $hosts = $bpc->HostInfoRead();
71 my $worksheet = $workbook->add_worksheet('BackupPC');
75 # insert sheet header (with formatting)
76 foreach my $c (@cols) {
77 if ($c =~ m/^=.*,(.+)/) {
78 $worksheet->write($row, $i++, $1, $header_format);
80 $worksheet->write($row, $i++, $c, $header_format);
85 foreach my $host_key (sort keys %{$hosts}) {
87 my $hostname = $hosts->{$host_key}->{'host'} || die "can't find host for $host_key";
91 # get backups for a host
92 my @backups = $bpc->BackupInfoRead($hostname);
93 print scalar @backups, " increments\n";
95 foreach my $backup (@backups) {
96 $worksheet->write($row, 0, $hostname);
98 for (my $i = 0; $i <= $#cols; $i++) {
100 if ($col =~ m/Time/) {
101 $worksheet->write_date_time($row, $i,
102 strftime("%Y-%m-%dT%H:%M:%S", localtime( $backup->{ $cols[$i] }) ),
105 } elsif ($col =~ m/(=[^,]+),*(.*)/) {
106 my ($f,$n) = ($1,$2);
107 $f =~ s/##/($row+1)/ge;
108 $worksheet->write($row, $i, $f, $formats->{$n});
110 $worksheet->write($row, $i, $backup->{$col}, $formats->{$col});
121 print "Created $xls_file\n";