【问题标题】:Perl script to convert xlsx to xml giving errorPerl脚本将xlsx转换为xml给出错误
【发布时间】:2015-08-02 18:12:58
【问题描述】:

我正在尝试使用 Perl 模块将 xlsx 转换为 xml。根据我的要求,Perl 脚本应该采用.xlsx 文件并准确转换为.xml 格式。在编译我的代码时出现错误:

print() on unopened filehandle XML at xlsxtoxml.pl.

代码:

#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::ParseExcel;
use XML::Writer;
use Spreadsheet::XLSX;
 my $excel = Spreadsheet::XLSX -> new ('Template.xlsx');

 foreach my $sheet (@{$excel -> {Worksheet}}) {
         $sheet -> {MaxRow} ||= $sheet -> {MinRow};
         foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) {
                $sheet -> {MaxCol} ||= $sheet -> {MinCol};
                foreach my $col ($sheet -> {MinCol} ..  $sheet -> {MaxCol}) {
                        my $cell = $sheet -> {Cells} [$row] [$col];
                        if ($cell) {
                           #print XML $cell -> {Val};
                        }
                        unless($col == $sheet -> {MaxCol}) {print XML ",";} 
                }
                unless( $row == $sheet -> {MaxRow}){print XML "\n";}
         }
  }
 close(XML);
my $xml_obj = XML::Writer->new(); 
    $xml_obj->print_xml("outTemplate.xml");

【问题讨论】:

  • 请建议我修改代码,并为我的要求提供更好的 perl 模块...提前谢谢

标签: xml perl perl-module perl-data-structures


【解决方案1】:

您在第 23 行关闭了文件句柄 XML,但您还没有在任何地方打开它。

先打开一个文件句柄,然后写入。

这是打开文件进行写入的语法:

open my $fh, ">" $filename or die $!;

【讨论】:

  • 嗨,出现以下错误无法通过 exceltoxml1 的包“XML::Writer”找到对象方法“print_xml”。 pl 第 25 行。那么如何找到那个对象谢谢你的帮助
  • XML::Writer的文档
猜你喜欢
  • 2016-12-25
  • 2011-07-08
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多