Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: XLSX to CSV conversion

by Generoso (Parson)
on Oct 17, 2012 at 15:04 UTC ( #999558=note: print w/replies, xml ) Need Help??

in reply to XLSX to CSV conversion

Maybe this example will help you.

#!/usr/bin/perl use strict; use warnings; use Spreadsheet::XLSX; my $excel = Spreadsheet::XLSX -> new ('d:\\book1.xlsx'); my $line; foreach my $sheet (@{$excel -> {Worksheet}}) { printf("Sheet: %s\n", $sheet->{Name}); $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) { $line .= "\"".$cell -> {Val}."\","; } } chomp($line); print "$line\n"; $line = ''; } }

Replies are listed 'Best First'.
Re^2: XLSX to CSV conversion
by Anonymous Monk on Apr 18, 2013 at 21:53 UTC
    Thank you for this simple yet superbly helpful  example.
    Having finally identified and installed apparently all of the packages dependencies and then combined with this excellent example of yours, I think that it alone has saved me a significant amount of tinkering. This probably has me 50% of the way to the basic conversion task which I had pending.
    If I may make an assumption from the nickname above : 
    1) Muito, muito obrigado. Voce nem pode imaginar a enorme ajuda que me acaba de dar aqui.
       or alternatively 
    2) "Muchas gracias" ?
       failing either of the above being applicable 
    3) Thanks a million :)
      I tried running the above script but it prints only the first line.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://999558]
[Corion]: Hmmm... Weird. Maybe it needs that for doing its timers or something. Still weird.
[Corion]: But I guess I'll find out soonish, as my application seems to use Prima for more than just displaying the OpenGL output soonish ;))
[ambrus]: No, I think the timers are handled fine in the event loop, as far as I can see.
[Corion]: So far, I liked Prima quite well as it simply seems to do what I want even if it has an upside-down coordinate system. But it installs from CPAN out of the box and is cross-platform

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (8)
As of 2016-12-09 10:35 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (150 votes). Check out past polls.