2013-07-01 5 views
1

любой один помочь мне написать сценарий PERL для создания .xml из файла .xls/.csv при условии ....Perl-код для преобразования содержимого в формате .xls в .xml

Я пытаюсь приведенный ниже код ... и он не работает Atall ...

#!/usr/bin/perl 

use strict; 
use warnings; 
use Spreadsheet::ParseExcel; 
use XML::Writer(); 
use XML::Writer::String(); 
use IO::File; 
use File::Find; 

print"Enter1"; 

my $parser = Spreadsheet::ParseExcel->new(); 
my $workbook = $parser->parse('C:\Users\uidw3321\Desktop\one.xls'); 

if (!defined $workbook) { 
    die $parser->error(), ".\n"; 
} 
my $xml_doc = XML::Writer::String->new(); 
my $xml_file = new IO::File(">D:\\tmp\\bmw.xml"); 
my $xml_doc_writer = new XML::Writer(OUTPUT => $xml_file);    

for my $worksheet ($workbook->worksheets()) { 

    my ($row_min, $row_max) = $worksheet->row_range(); 
    my ($col_min, $col_max) = $worksheet->col_range(); 

    my %headers =(); 
    for my $row ($row_min .. $row_max) { 
     for my $col ($col_min .. $col_max) { 
    my $cell = $worksheet->get_cell($row, $col); 
      if ($row == 0) { 
       $headers{$col} = $cell->unformatted(); 
      } else { 
       $xml_doc_writer->dataElement($headers{$col},$cell->unformatted()); 
      } 
     } 
    } 

} 
$xml_doc_writer->end(); 
$xml_file->close(); 

Пожалуйста, помогите

+0

Что не работает? - можете ли вы опубликовать ошибку, которую вы получаете? – plusplus

+0

он даже не показывает никакой ошибки .... просто пустой экран и заканчивается ... – user2538554

ответ

1

Ваш код выдает ошибку: «Попытка вставить открывающий тег после закрытия документа элемент». Чтобы исправить это, просто начните содержимое XML с некоторым тегом:

$xml_doc_writer->startTag("someTag"); 

и закончить его с

$xml_doc_writer->endTag(); 

В целом Ваш рабочий код должен быть:

#!/usr/bin/perl 

use strict; 
use warnings; 
use Spreadsheet::ParseExcel; 
use XML::Writer(); 
use XML::Writer::String(); 
use IO::File; 
use File::Find; 

print"Enter1"; 

my $parser = Spreadsheet::ParseExcel->new(); 
my $workbook = $parser->parse('C:\Users\uidw3321\Desktop\one.xls'); 

if (!defined $workbook) { 
    die $parser->error(), ".\n"; 
} 
my $xml_doc = XML::Writer::String->new(); 
my $xml_file = new IO::File(">D:\\tmp\\bmw.xml"); 
my $xml_doc_writer = new XML::Writer(OUTPUT => $xml_file);    

$xml_doc_writer->startTag("someTag"); 
for my $worksheet ($workbook->worksheets()) { 

    my ($row_min, $row_max) = $worksheet->row_range(); 
    my ($col_min, $col_max) = $worksheet->col_range(); 

    my %headers =(); 
    for my $row ($row_min .. $row_max) { 
     for my $col ($col_min .. $col_max) { 
    my $cell = $worksheet->get_cell($row, $col); 
      if ($row == 0) { 
       $headers{$col} = $cell->unformatted(); 
      } else { 
       $xml_doc_writer->dataElement($headers{$col},$cell->unformatted()); 
      } 
     } 
    } 

} 

$xml_doc_writer->endTag(); 
$xml_doc_writer->end(); 
$xml_file->close(); 

Я надеюсь, что это будет помощь, ура!

Смежные вопросы