annotate bin/xls2tsv.pl @ 0:2aa53823fb21

new repo
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Sat, 06 Jun 2026 10:19:04 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
1 #!/usr/bin/perl
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
2
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
3 #~ Converter Script for XLS to TSV. Handles Multiple Tabs into separate files.
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
4 #~ (c)2004 Anima Legato <l3gatosan@gmail.com>
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
5 #~
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
6 #~ This code is redistributable and modifiable under the same terms as Perl
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
7 #~ itself.
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
8
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
9 use strict;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
10 use warnings;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
11
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
12 use Spreadsheet::ParseExcel::Simple;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
13
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
14 for (@ARGV) {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
15 for (glob $_) {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
16 next unless m/\.xls$/i;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
17 next unless -r $_;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
18 dump_books($_);
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
19 }
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
20 }
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
21
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
22 sub dump_books {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
23 my $file = shift;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
24 my $eBook = Spreadsheet::ParseExcel::Simple->read($file);
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
25 unless (defined $eBook) {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
26 warn "Can't open Spreadsheet in file $file (@".$file."\n";
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
27 return undef;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
28 }
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
29 my @sheet = $eBook->sheets;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
30 for (0..0) {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
31 next unless $sheet[$_]->has_data();
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
32 #my $sfn = $file;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
33 #$sfn =~ s?\.xls$??i;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
34 #$sfn.= ((@sheet > 1) ? sprintf(".%02i",$_) : "").'.tsv';
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
35 #open TAB, '>', $sfn or do {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
36 # warn "Unable to write to $sfn";
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
37 # next;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
38 #};
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
39
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
40 while ($sheet[$_]->has_data) {
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
41 my @row = $sheet[$_]->next_row;
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
42 print join("\t",@row)."\n"; # print TAB ...
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
43 }
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
44 }
2aa53823fb21 new repo
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
45 } ##--dump_books--##