#!/usr/bin/perl use strict; use warnings; use Spreadsheet::WriteExcel; # First build your data table in an array my @T; while () { chomp; my ($row, $col, $val) = split /,\s*/, $_; last if ! defined $col; $T[$row][$col] = $val; } my $WB = Spreadsheet::WriteExcel->new("FOO.xls"); my $WS = $WB->add_worksheet("FRED"); # Then write the data into your spreadsheet in order for (my $row=0; $row<@T; ++$row) { next if !defined $T[$row]; for (my $col=0; $col < @{$T[$row]}; ++$col) { if (defined $T[$row][$col]) { $WS->write($row, $col, $T[$row][$col]); print "T[$row][$col] = $T[$row][$col]\n"; } } } __DATA__ 1, 2, banana 0, 0, Cell A1 0, 7, bazooka 3, 3, Cell D4 1, 1, apple 7, 0, flooglehorn