in reply to Re^6: Excel to CSV datetime conversion- format changes
in thread Excel to CSV datetime conversion- format changes
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"; } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^8: Excel to CSV datetime conversion- format changes
by marto (Cardinal) on Apr 25, 2014 at 10:33 UTC | |
by vsmeruga (Acolyte) on Apr 25, 2014 at 10:55 UTC | |
by marto (Cardinal) on Apr 25, 2014 at 11:02 UTC | |
by vsmeruga (Acolyte) on Apr 25, 2014 at 11:04 UTC | |
by marto (Cardinal) on Apr 25, 2014 at 11:08 UTC |