-
Notifications
You must be signed in to change notification settings - Fork 0
/
excel-splitter.pl
35 lines (25 loc) · 857 Bytes
/
excel-splitter.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/perl -w
# Split an excel file into multiple csv files (one csv per worksheet)
# Right now this is for a very special usecase: only the first column in each sheet will be copied to the csv)
use strict;
use Spreadsheet::ParseExcel;
my $parser = Spreadsheet::ParseExcel->new();
print "Opening xls\n";
my $workbook = $parser->parse ( 'input.xls' );
print "Working through workbooks\n";
for my $worksheet ( $workbook->worksheets() ) {
my $sheetname = $worksheet->get_name();
$sheetname =~ s/[^a-zA-Z0-9-_]//g;
$sheetname = lc($sheetname);
print "Sheet $sheetname\n";
my $has_data = 1;
my $row_no = 0;
open(OUT, '>'.$sheetname.'.csv');
while( $has_data ) {
my $cell = $worksheet->get_cell( $row_no, 0 );
$row_no++;
if ($cell) { print OUT lc($cell->value)."\n"; }
$has_data = ($cell && $cell->value ne "");
}
close(OUT);
}