Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

csv-Datei mit Perl auslesen und in eine txt-Datei schreiben

Hallo zusammen,

ich habe eine EXCEL-Tabelle unter der Endung CSV gespeichert. Nun möchte ich mit einem Perl-Script diese Datei zeilenweise auslesen und dann in eine txt-Datei schreiben.


Hier ein paar Codeschnipsel:

use strict;
use Cwd;           # Ermittelt das aktuelle Arbeitsverzeichnis
use File::Copy;       # Ermöglicht das Kopieren von Dateien und gilt als wichtides
                # Tool, um Dateien mit Perl betriebssystemunabhängig kopieren zu können
use File::Find;       # Durchsucht Verzeichnisbäume nach Dateien.
################################################################################

# Variablen, die Werte aus der "CSV-Datei" übernehmen.
undef $esn;
undef $fsn;
undef $pl;
undef $sn;
undef $pf;
undef $porte;
undef $portf;

################################################################################
open(CSVDatei, ">>BR_neu.csv");             # CSV-Datei zum anhängenden Schreiben öffnen
close(CSVDatei);

# CSV-Datei Zeichenweise auslesen
@CSVDatei = ("");    # Speicher für alle Datensaetze
@Datensatz = ("");   # Speicher für alle Felder des aktuellen Datensatzes
$Felder = "";        # Speicher für die Namen der Felder (stehen in der ersten Dateizeile)
$i = 0;

################################################################################
open(CSVDatei, "<BR_neu.csv") || die "CSV-Datei nicht gefunden\n";
while(<CSVDatei>)              # Semikolonbegrenzte Datei einlesen
 {
  if($i == 0)                  # erste Zeile der Datei einlesen
   {
    $Felder = $_;              # Feldnamen ermitteln
   }
  else
   {
    $CSVDatei[$i] = $_;        # ab zweiter Zeile in @CSVDatei einlesen
   }
  $i++;                        # Datensatzzähler erhöhen
 }
close(CSVDatei);
$Anzahl = $i - 1;              # Anzahl Datensätze merken
chop($Felder);
@Datenfelder = split(/;/,$Felder);    # Erste Zeile mit Feldnamen aufdröseln
for(@CSVDatei)                        # solange Daten in der CSv-Datei sind
 {
  @Datensatz = split(/;/,$_);         # Aktuellen Datensatz aufdröseln
  $i = 0;
  for(@Datensatz)
   {
    print SQLVorlage "<b>$Datenfelder[$i]:</b> $Datensatz[$i]<br>\n";   # Aktuellen Datensatz schreiben
    $i++;
   }
 }
print SQLVorlage "</body>\n</html>\n";
close(SQLVorlage);
print $Anzahl," Datensaetze geschrieben\n";   # Nur zur Kontrolle: auf Standardausgabe


Kann mir einer helfen?

Gruß Rainer


« Flash-Animation -> CountdownPHP - Unterschiede von Fonts mit GD-Library auf verschiedenen BSs? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Dateiendung
Die Dateiendung ist ein Teil des Dateinamen und zeigt das Dateiformat an.Siehe auch: Dateiendungenen...

Auslagerungsdatei
Die Auslagerungsdatei ist der virtuelle Speicher von Windows. Wenn der RAM-Speicher nicht ausreicht um mit den geöffneten Programmen weiter zu arbeiten, werden Daten...

Dateiendungen
Die Dateiendung, auch Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an den Dateinamen angehä...