#!/usr/bin/perl use strict; use warnings; use Excel::Writer::XLSX; my $xlsfnout = "example.xlsx"; if (-e $xlsfnout) # First deleted old SS. { unlink $xlsfnout or die "ERROR: Could not delete $xlsfnout"; } my $workbook = new Excel::Writer::XLSX($xlsfnout); if (!$workbook) { warn "ERROR: Could not create workbook for $xlsfnout"; exit 1; } # Add a worksheet and set print options. my $sheet = $workbook->add_worksheet('Sheet1'); $sheet->print_row_col_headers(); # Print cell letters and numbers $sheet->print_across(); # For wide pages that don't fit on one page. $sheet->set_footer('&CPage &P',0.25); $sheet->set_header('&C&Z&F&R&D &T',0.25); $sheet->set_landscape(); $sheet->set_print_scale(80); # Print zoom. $sheet->freeze_panes(1,0); # Freeze top row only $sheet->set_margins(0.5); # Inches $sheet->set_margins_LR(0.5); # Inches # Change width for only first column # Do set_column() or set_row() before any writes. $sheet->set_column(0,0,20); # (col start, col end, width). Also set_column('A:B',20); # Define the formats and add it to the worksheet # Define a custom color. my $tan=$workbook->set_custom_color(40,0xDB,0xB8,0x4d); # (index, r, g, b) # Default format. my $fmtdef = $workbook->add_format( font => 'Arial', size => 10, color => 'black', align => 'left' ); # Header format. my $fmthdr = $workbook->add_format( center_across => 1, bold => 1, size => 10, border => 4, color => 'black', bg_color => 'cyan', border_color => 'black', align => 'vcenter', ); # Fake spreadsheet data my @headings = ('X', 'X*X', 'X*X*X'); my @data; push @data, [ $_, $_*$_, $_*$_*$_ ] for 0 .. 9; my $row=0; for (my $i=0; $i<=$#headings; $i++) # Write hdr { $sheet->write($row,$i, $headings[$i], $fmthdr); # (row,col,data,fmt) } $row++; for my $ra (@data) { # Write details for (my $i=0; $i<=$#$ra; $i++) # Write one detail line { $sheet->write($row,$i, $ra->[$i], $fmtdef); # (row,col,data,fmt) } $row++; } $workbook->close();