I took this from Spreadsheet::XLSX's perldoc. Make sure modules and all dependencies are installed through CPAN, and I found perl 5.10 was needed due to a dependency on Weak References in Spreadsheet::ParseExcel.
#!/usr/bin/perl
# SSF 082110 - for perlmonks - convert XLSX to tab-delimited
use warnings;
use strict;
use Spreadsheet::XLSX;
use Text::Iconv;
my ($file,$sheetindex)=@ARGV;
die "Usage: $0 file.xlsx [sheetindex]\n" unless $file;
$sheetindex||=0;
my $converter=Text::Iconv->new("utf-8","windows-1251");
my $excel=Spreadsheet::XLSX->new($file,$converter);
my @sheets=@{$excel->{Worksheet}};
die "Bad sheet index: $sheetindex\n" if $sheetindex<0 or $sheetindex>$
+#sheets;
my $sheet=$sheets[$sheetindex];
$sheet->{MaxRow}||=$sheet->{MinRow};
for my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {
$sheet->{MaxCol}||=$sheet->{MinCol};
for my $col ($sheet->{MinCol}..$sheet->{MaxCol}) {
my $cell=$sheet->{Cells}[$row][$col];
if ($cell) {
print $cell->{Val};
}
print "\t" if $col<$sheet->{MaxCol};
}
print "\n";
}
exit;
Note that it only outputs one sheet, defaulting to the first. I've noticed that Excel's blank book has three sheets, so it is already three-dimensional. This script could use more error checking, but it works on a Linux system with the caveats listed above.
HTH,
SSF
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|