in reply to msft xlsx2txt help please!
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.#!/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;
HTH,
SSF
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: msft xlsx2txt help please!
by david_lyon (Sexton) on Aug 23, 2010 at 13:19 UTC |