use Encode; use utf8; use XML::LibXML; use Spreadsheet::ParseExcel; system("cls"); # Read command line arguments #---------------------------------------------------------------------------------------- my $materialmapping_file = shift; my $data_folder = shift; print "Material mapping generator - Version 0.0.6 - Final \nmaterialmapping_file:$materialmapping_file\ndata_folder:$data_folder\n"; # subroutine sub getSQLTimeStamp { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); return sprintf "%4d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec; } # Main #---------------------------------------------------------------------------------------- unless (defined $materialmapping_file and defined $data_folder) { print "Usage: $0 \n"; exit; } opendir ( DIR, $data_folder ) || die "Error in opening dir $data_folder\n"; my $materialmapping_table_xml = XML::LibXML->createDocument( "1.0", "UTF-8"); my $materialmapping_table_xml_root = $materialmapping_table_xml->createElement("masterdata"); $materialmapping_table_xml_root->setAttribute('version',getSQLTimeStamp()); $materialmapping_table_xml->setDocumentElement($materialmapping_table_xml_root); print "loading...\n"; while(($filename = readdir(DIR))){ next unless $filename =~ /\.xls$/i; print " - $filename \n"; my $parser = Spreadsheet::ParseExcel->new(); my $oBook = $parser->parse($data_folder.$filename); next unless defined $oBook; for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++) { $oWkS = $oBook->{Worksheet}[$iSheet]; .........................................................