My source file has around 100 fields and I have problem while conversion with datetime format fields.
changed the script to below code and got error as below in the output2.csv file:
"Can't locate object method "new" via package "Spreadsheet::ParseExcel::Utility" at ./perl_excel_xls2n.pl line 15."
#!/usr/bin/perl -w
# For each tab (worksheet) in a file (workbook),
# spit out columns separated by ",",
# and rows separated by c/r.
use Spreadsheet::ParseExcel::Utility qw(ExcelFmt);
use strict;
my $file='output2.csv';
my $datefmt = 'dd/mm/yyyy'; # ISO 8601
open STDOUT, ">", $file or die "$0: open: $!";
open STDERR, ">&STDOUT" or die "$0: dup: $!";
my $filename = shift || "/home/etx/srcfile.xls";
my $e = new Spreadsheet::ParseExcel::Utility qw(ExcelFmt);
my $eBook = $e->Parse($filename);
my $sheets = $eBook->{SheetCount};
my ($eSheet, $sheetName);
my $cell = $e->get_cell( $eSheet->{row}, $eSheet->{col} );
my $value = $cell->value();
foreach my $sheet (0 .. $sheets - 1) {
$eSheet = $eBook->{Worksheet}[$sheet];
$sheetName = $eSheet->{Name};
#print "#Worksheet $sheet: $sheetName\n";
next unless (exists ($eSheet->{MaxRow}) and (exists ($eSheet->{Max
+Col})));
foreach my $row ($eSheet->{MinRow} .. $eSheet->{MaxRow}) {
foreach my $column ($eSheet->{MinCol} .. $eSheet->{MaxCol}) {
if (defined $cell->{Type} && $cell->{Type} eq 'Date')
{
$value = ExcelFmt($datefmt, $cell->{Val});
}
if (defined $eSheet->{Cells}[$row][$column])
{
print $eSheet->{Cells}[$row][$column]->Value . ",";
} else {
print ",";
}
}
print "\n";
}
}
|