用于将.xls中的内容转换为.xml的perl代码
任何人都可以帮助我编写一个perl脚本,从提供的.xls/.csv文件创建.xml 我正在尝试下面的代码…但它无法正常工作用于将.xls中的内容转换为.xml的perl代码,xml,perl,xslt,Xml,Perl,Xslt,任何人都可以帮助我编写一个perl脚本,从提供的.xls/.csv文件创建.xml 我正在尝试下面的代码…但它无法正常工作 #!/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 = Spread
#!/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();
请帮助您的代码抛出错误:“尝试在文档元素关闭后插入开始标记”。 要解决此问题,只需使用一些标记启动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();
我希望这会有帮助,干杯 代码抛出错误:“尝试在文档元素关闭后插入开始标记”。 要解决此问题,只需使用一些标记启动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();
我希望这会有帮助,干杯 什么不起作用你能发布你得到的错误吗?它甚至没有显示任何错误…只是一个空白屏幕和结束…什么不起作用你能发布你得到的错误吗?它甚至没有显示任何错误…只是一个空白屏幕和结束。。。