How to use correctly Spreadsheet::WriteExcel to convert xml to xls

Hi to all,

I want to convert xml file to binary Excel file, after googling for a while, I found cpan tool "Spreadsheet::WriteExcel::FromXML". I installed both,
Spreadsheet::WriteExcel and Spreadsheet::WriteExcel::FromXML.

To test Spreadsheet::WriteExcel I executed a example script that comes within it, "a_simple.pl" and works.

But the codes below intended to use convert xml to xls don't work for me.

I've been trying to follow 2 examples of xml to xls:
This code below
Ref: Excel::Template - Excel::Template - metacpan.org

  #!/usr/bin/perl -w

  use strict;

  use Excel::Template;

  # Create the Excel template
  my $template = Excel::Template->new(
      filename => 'test.xml',
  );
  # Add a few parameters
  $template->param(
      HOME => $ENV{HOME},
      PATH => $ENV{PATH},
  );
  $template->write_file('test.xls');

and the options from the code below:
Ref: Spreadsheet::WriteExcel::FromXML - Create Excel Spreadsheet from XML - metacpan.org

  use strict;
  use warnings;
  use Spreadsheet::WriteExcel::FromXML;
  my $fromxml = Spreadsheet::WriteExcel::FromXML->new( "file.xml" );
  $fromxml->parse;
  $fromxml->buildSpreadsheet;
  $fromxml->writeFile("file.xls");
  # or
  my $data = $fromxml->getSpreadsheetData;
  # then write $data to a file...or do with it as you wish

  # or, even simpler:
  my $data = Spreadsheet::WriteExcel::FromXML->BuildSpreadsheet( "file.xml" );

  # or, even simpler:
  Spreadsheet::WriteExcel::FromXML->XMLToXLS( "file.xml", "file.xls" );

Follow the 1rst example, the test.xml is as simple as:

  <workbook>
      <worksheet name="tester">
          <cell text="$HOME" />
          <cell text="$PATH" />
      </worksheet>
  </workbook>

and I get the following errors when I run the 2nd code:

./xml_to_xls.pl # I only trying the lines in red in code above
Must define a title attribute for worksheet!
 at /usr/local/share/perl/5.10.1/Spreadsheet/WriteExcel/FromXML.pm line 248
    Spreadsheet::WriteExcel::FromXML::_processTree('Spreadsheet::WriteExcel::FromXML=HASH(0x9f2a818)', 
'ARRAY(0xa4b5340)', 'worksheet', 'SCALAR(0xa4a08d0)', 'SCALAR(0xa4a08f0)', undef, undef) called at /usr/local/share/perl/5.10.1/
Spreadsheet/WriteExcel/FromXML.pm line 328
    Spreadsheet::WriteExcel::FromXML::_processTree('Spreadsheet::WriteExcel::FromXML=HASH(0x9f2a818)', 'ARRAY(0xa4b5270)', 
'workbook', 'SCALAR(0xa4a08d0)', 'SCALAR(0xa4a08f0)') called at /usr/local/share/perl/5.10.1/Spreadsheet/WriteExcel/FromXML.pm line 186
    Spreadsheet::WriteExcel::FromXML::parse('Spreadsheet::WriteExcel::FromXML=HASH(0x9f2a818)') called at ./xml_to_xls.pl line 7

May somebody please help me saying me how to test/use correctly the module Spreadsheet::WriteExcel::FromXML or
Spreadsheet::WriteExcel in order to convert XML files to Excel XLS files?

Thanks in advance

---------- Post updated at 03:51 PM ---------- Previous update was at 05:32 AM ----------

May somebody help me with this

Thanks in advance.

It's giving you a relevant-looking error message:

Must define a title attribute for worksheet!

I suggest you give your worksheet a title attribute.

Hi Corona,

Thanks for answer me.

I just trying with this example as in the link I show.

  <workbook>
      <worksheet name="tester">
          <cell text="$HOME" />
          <cell text="$PATH" />
      </worksheet>
  </workbook>

The part in red wouldn't be the title of the worksheet?

Thanks for help so far

---------- Post updated 10-12-11 at 02:07 AM ---------- Previous update was 10-11-11 at 04:57 PM ----------

May somebody help me with this.

Thanks in advance

We're not "on call". If we don't answer you in the first 5 minutes, wait! :wall:

I don't see a 'title' attribute in there, I do see a 'name' one, it's asking for 'title', give it 'title'. Computers are the most literal-minded things in the world.

I've been unable to install this Spreadsheet::WriteExcel::FromXML module, too many thousand dependencies, so I can't test it myself.

Sorry for that man.

I've changed title and works and changed some things within the module and fits some
situations, but when I change a few things in xml sample, other errors appear.
I think is better to ask to the author the correct xml structure the module expects.

Don't worry, many thanks for your help and time.

Grettings.

Which other errors? As before, it might be telling you exactly what it wants...

parse, scalar errors. but don't worry. I found some xml files that open correctly in excel and others don't because they have more than 256 columns which is what "xls" files accept.

I don't want to take you or anubody else time in this because I realize that won't be the solution since thin perl module only converts xml to xls and now to solve that issues I need to do a script to convert my xml files into xml xlsx format.

I've been seeing how xlsx format works and I know what which files I need to generate in order to get the correct structure.

Probably to get some part of that I will need to ask something to experts in the forum, maybe if that happens and you see my eventual question and you have some time, it would be wonderful receive your help.

Meantime, much appreciated for your time and interest to help.

This may be overkill; any version of excel understands .csv files natively. That's just comma separated rawtext.

The issue is I have to get xls or xlsx format because those files will be the input of other application (closed app It can't be modified) that only accepts xls or xlsx files.

But what I've seen from yesteday it doesn't look too complicated, I only need to generated 3 variable files that are part of an xlsx (OpenXML) structure, sheet1.xml,
sheet2.xml and sharedStrings.xml the other files are fixed. Even I need to investigate how to put some little parts in commands, because I don't know many things of unix scripting, will be essentially obtained doing loops to get a easy xml structure of those files that will be zipped and once that I only need to change the extension to xlsx.