{
system("cls");
# Read command line arguments
my ($materialmapping_file, $data_folder) = @ARGV;
print "OPTIONS\nmaterialmapping_file: $materialmapping_file\n" .
"data_folder: $data_folder\n";
if (length $materialmapping_file && length $data_folder)
{
opendir(my $dir, $data_folder)
or 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 "Parsing files...\n";
while (my $filename = readdir($dir))
{
if ($filename =~ / \. xls $ /ix)
{
parse_xls_file($data_folder,
$filename,
$materialmapping_table_xml,
$materialmapping_table_xml_root);
}
}
$materialmapping_table_xml->toFile($materialmapping_file, 2);
}
}
####
sub parse_xls_file
{
my ($data_folder,
$filename,
$materialmapping_table_xml,
$materialmapping_table_xml_root) = @_;
if (my $oBook = Spreadsheet::ParseExcel->
new()->parse($data_folder . $filename))
{
for (0 .. $oBook->{SheetCount} - 1)
{
process_sheet($oBook,
$_,
$materialmapping_table_xml,
$materialmapping_table_xml_root)
}
}
print "Parsed $filename\n";
}
####
sub process_sheet
{
my ($oBook,
$iSheet,
$materialmapping_table_xml,
$materialmapping_table_xml_root) = @_;
my $oWkS = $oBook->{Worksheet}[$iSheet];
...
}
####
my $oBook = $parser->parse($data_folder.$filename);
####
>perl script.pl output.xml Excel\
####
if($map_Cmin >= 0 and $map_Cmin >= 0 and $title_row >= 0){
for(my $iR = $title_row +1; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++){
$internal_cell = $oWkS->{Cells}[$iR][$map_Cmin];
$active_cell = $oWkS->{Cells}[$iR][$active_col];
$family_cell = $oWkS->{Cells}[$iR][$family_col];
if(defined $internal_cell and defined $active_cell and defined $family_cell and length(decode('cp1252',$internal_cell->{Val})) gt 0 and !(length(decode('cp1252',$active_cell->{Val})) gt 0) and length(decode('cp1252',$family_cell->{Val})) gt 0)
####
| A | B | C | D | E |
===+========+==========+===========+=========+=========+
1 | | Configurator mapping |
---+--------+----------+-----------+---------+---------+
2 | active | internal | pr_family | pr1 | pr2 |
---+--------+----------+-----------+---------+---------+
3 | yes | item 1 | 1,2 | value 1 | value 2 |
---+--------+----------+-----------+---------+---------+
4 | yes | item 2 | 1,2 | value 3 | value 3 |
---+--------+----------+-----------+---------+---------+
5 | yes | item 3 | 1,2 | value 5 | value 4 |
---+--------+----------+-----------+---------+---------+
####