Hallo,
Ich hatte mal sowas, um Tabulatorgetrennte Dateien in eine Excel-Datei zu schreiben.
Im Prinzip hast Du das gleiche Problem.
Das hier ist nur ein Beispiel, und bitte bedenke: Ich bin auch Neuling :)
Das Beispiel nimmt an, dass Deine Eingabedatei Semikolon getrennt ist, und Deine Ausgabedatei tabulatorgetrennt:
--schnipp
foreach my $TABDATEI (glob("*.txt")){
 open (EINGABEFILE, "<$TABDATEI") or warn "Kann $TABDATEI nicht lesen!\n";
 open (AUSGABEFILE, ">$TABDATEI.neu.txt");
  while (<EINGABEFILE>) {
    chomp;
    # Split on single tab
    my @Fld = split(';', $_);
    foreach my $token (@Fld) {
      print AUSGABEFILE "$token\t"
      }
    print AUSGABEFILE "\n";
    }
 }
--schnipp--
Das hier ist der Code von meinem, äh, TabToExcel-Skript. Vielleicht hilft es Dir was.
--schnipp--
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#! D:\Perl\bin
use Spreadsheet::WriteExcel::Big; # ben÷tigt IO::Stringy and OLE::Storage_Lite
my $Dateiendung=$ARGV[0];
unless (defined($Dateiendung)){
  print "Bitte Dateiendung angeben: ";
  chop($Dateiendung = <STDIN>);}
unless (defined (my $filename = glob("*.$Dateiendung"))){
  warn "Keine Datei zu verarbeiten!\nScript wird beendet.\n";
  sleep 5;
  die;}
#Ende der &âberpr³fung
$Dateiendung=~ m/([a-z_0-9]+$)/i;
foreach my $TABDATEI (glob("*.$1")){
  my $SHEETCOUNTER = 1;
  $TABDATEI=~ m/(^[^.]+)/i;
  print "verarbeite $TABDATEI\n";
  open (TABFILE, "<$TABDATEI") or warn "Kann $TABDATEI nicht lesen!\n";
  # Create a new Excel workbook
  my $workbook = Spreadsheet::WriteExcel::Big->new("$1.xls");
  my $worksheet = $workbook->add_worksheet();  # Sheet1
  # Row and column are zero indexed
  my $row = 0;
  while (<TABFILE>) {
    chomp;
    # Split on single tab
    my @Fld = split('\t', $_);
    my $col = 0;
    foreach my $token (@Fld) {
      $worksheet->write_string($row, $col, "$token");
      $col++;
      if ($col > 255) {
        warn ("Fehler! Maximale Spaltenzahl ³berschritten!\nScript wird beendet");
        <>;
        die;}
    }
    print STDOUT ("Arbeitsblatt $SHEETCOUNTER, Zeile $row\n");
    $row++;
    if ($row > 65535) {
      $row = 0;
      $SHEETCOUNTER++;
      $worksheet = $workbook->add_worksheet();
      }
  }
$workbook->close();
close TABFILE;}
exit;
--schnipp--
GrüÃe
AndreasM\n\n
<!--EDIT|renee|1130328238-->