my $oExcel2 = new Spreadsheet::ParseExcel::SaveParser; my $oBook = $oExcel2->Parse('double_sheet.xls'); # Font format my $iF1 = $oBook->AddFont( Name => 'Arial', Height => 10, Bold => 1, #Bold Italic => 0, #Italic Underline => 0, Strikeout => 0, Super => 0, Wrap => 1 ); # Cell Format my $iFmt = $oBook->AddFormat( Font => $oBook->{Font}[$iF1], AlignH => 0, Fill => [0, 43, 0], # Filled with yellow BdrStyle => [2, 2, 2, 2], # Border Right, Top BdrColor => [0, 0, 0, 0], # Right->Green ); # Rewrite the cells with the new format $oBook->AddCell(0, 0, 0, 'TEXT1', $iFmt); $oBook->AddCell(0, 0, 1, 'TEXT2', $iFmt); $oBook->AddCell(0, 0, 2, 'TEXT3', $iFmt); # modify the column width $oBook->{Worksheet}->[0]->{ColWidth}->[0]=14; $oBook->{Worksheet}->[0]->{ColWidth}->[1]=14; $oBook->{Worksheet}->[0]->{ColWidth}->[2]=33; # Modify the column format based on column header our $sheet; our $col; our $row; our $header1_col; our $header2_col; our $header3_col; our $number_1; our $number_2; our $date_1; our $a = 0; foreach $sheet (@{$oBook->{Worksheet}}) { foreach $col ($sheet->{MinCol} .. $sheet->{MaxCol}) { if ($sheet->{Cells}[0][$col]->{Val} eq "HEADER1") { $header1 = $col; } if ($sheet->{Cells}[0][$col]->{Val} eq "HEADER2") { $header2 = $col; } if ($sheet->{Cells}[0][$col]->{Val} eq "HEADER3") { $header3 = $col; } } foreach $row ($sheet->{MinRow}+1 .. $sheet->{MaxRow}) { $number_1 = $sheet->{Cells}[$row][$header1]->{Val}; ### A way to convert comma separated numbers into excel numbers .. maybe there's a better way :/ my $convert_1 = $number_1; $convert_1 =~ s/,/./; $oBook->AddCell($a, $row,$header1, $convert_1, $iFmtNum); $number_2 = $sheet->{Cells}[$row][$header2]->{Val}; ## Again a number conversion comma to dot my $convert_2 = $number_2; $convert_2 =~ s/,/./; $oBook->AddCell($a, $row,$header2, $convert_2, $iFmtNum); $date_1 = $sheet->{Cells}[$row][$header3]->{Val}; ## A date conversion i needed to display it properly on excel my $convert_date = $date_1; $convert_date =~ s/-0/-200/; $oBook->AddCell($a, $row,$header3, $convert_date, $iFmtNum); } $a = $a + 1; }