use strict;
use warnings;
use Getopt::Std;
use Spreadsheet::ParseExcel::Simple;

use vars qw($opt_s $opt_v);

# Optionen lesen
getopts('vs:');
# Angegebene Arbeitsblaetter in einen Hash umwandeln
my %indexes = map { $_ => 1 } split(/,/, $opt_s);

# Mal sehen, ob es eine Dateiangabe gibt
die "Usage: $0 [-s n,...] [-v] datei.xls\n" unless (@ARGV);

# Ja, Dateiname ubernehmen
my $filename = shift;

# Passt die Endung (.xls)?
$filename =~ /(.*)\.xls$/i or die "Ungueltiger Dateiname: $filename\n";

# Dateiname ohen Endung:
my $prefix = $1;

print "Lese Datei $filename ...\n" if($opt_v);

# Datei parsen
my $xls = Spreadsheet::ParseExcel::Simple->read($filename)
    or die "Can't read $filename: $!";

my $index = 0;
foreach my $sheet($xls->sheets)
  {
  $index++;
  # falls das Arbeitsblatt nicht ausgewaehlt wurde,
  # mit dem naechsten weitermachen
  next if($opt_s && !$indexes{$index});

  # Arbeitsblatt als CSV abspeichern
  print "Writing '$prefix-Sheet$index.csv'...\n" if($opt_v);
  open(CSV, '>', $prefix. '-Sheet' . $index . '.csv');
  while ($sheet->has_data)
    {
    my @row = $sheet->next_row;
    foreach (@row)
      {
      # aktuelles Feld ist in $_
      # ',' und '"' innerhalb der Felder bearbeiten
      if (/[,"]/)
        {
        s/"/""/g;
        s/^/"/;
        s/$/"/;
        }
      }
    # geaendertes Array ausgeben
    print CSV join(',',@row), "\n";
    }
  close CSV;
  }