diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/xls2tsv.pl	Sat Jun 06 10:19:04 2026 +0100
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+#~ Converter Script for XLS to TSV.  Handles Multiple Tabs into separate files.
+#~ (c)2004 Anima Legato <l3gatosan@gmail.com>
+#~
+#~ This code is redistributable and modifiable under the same terms as Perl
+#~ itself.
+
+use strict;
+use warnings;
+
+use Spreadsheet::ParseExcel::Simple;
+
+for (@ARGV) {
+    for (glob $_) {
+        next unless m/\.xls$/i;
+        next unless -r $_;
+        dump_books($_);
+    }
+}
+
+sub dump_books {
+    my $file = shift;
+    my $eBook = Spreadsheet::ParseExcel::Simple->read($file);
+    unless (defined $eBook) {
+        warn "Can't open Spreadsheet in file $file (@".$file."\n";
+        return undef;
+    }
+    my @sheet = $eBook->sheets;
+    for (0..0) {
+        next unless $sheet[$_]->has_data();
+        #my $sfn = $file;
+        #$sfn =~ s?\.xls$??i;
+        #$sfn.= ((@sheet > 1) ? sprintf(".%02i",$_) : "").'.tsv';
+        #open TAB, '>', $sfn or do {
+         #   warn "Unable to write to $sfn";
+          #  next;
+        #};
+        
+        while ($sheet[$_]->has_data) { 
+            my @row = $sheet[$_]->next_row;
+            print join("\t",@row)."\n"; # print TAB ...
+        }
+    }
+} ##--dump_books--##