# CSV-Datei erstellen, zellenweise schreiben oder auslesen



## HasAvs (10. April 2008)

Hallo Kollegen,
ich bin Anfänger in C++ Programmierung. Ich brauche tips zu Bücher oder Hilfe von euch, wie man mit C++  eine CSV datei erstellt und diese dann unter einem bestimmten Namen speichert. Hat man Z.B auf diese Art und weise  mehrere Dateien erstellt, so muss man die Möglichkeit haben eine gespeicherte Datei mit Auswahl und selectieren und die Zeilenweise auslesen, die ausgelesene Zeilen anderer Variablen zuweisen.


----------



## sheel (10. April 2008)

Hi
Und was soll da drinstehen
Laut Wikipedia etcc gibt es keinen eindeutigen Zweck/kein eindeutiges Speicherformat für csv. Also, was soll da drin stehen?
Gruß


----------



## HasAvs (10. April 2008)

sheel hat gesagt.:


> Hi
> Und was soll da drinstehen
> Laut Wikipedia etcc gibt es keinen eindeutigen Zweck/kein eindeutiges Speicherformat für csv. Also, was soll da drin stehen?
> Gruß



Hallo Kollege,
danke erstmal für deine schnelle reaktion,
es muss nicht unbedingt eine csv datei sein, es kann auch einen excel tabelle sein. die csv ist auch eine Excel format. Ich möchte nämlich mit einem Visulaisierungssytem rezepte in eine Tabelle speichern.

1. spalte                   2.Spalte
Variable1                  wert1
Variable2                  wert2
Variable3                  wert3
usw.

danke


----------



## sheel (11. April 2008)

Naja, mit dem Format von Excel-Dateien kenn ich mich nicht ganz aus, ich nehm einmal an, du weißt auch generell nicht wie du Dateien machst?


----------



## Barti20 (9. Februar 2010)

Hey Leute ich hol das Thema mal wieder aus der Versenkung raus da es recht gut passt  

habe zwei vectoren wo jeweils was drin steht und das ganze wird in eine csv datei geschrieben soweit auch alles supi geht auch nur ich bekomms net hin die zweite spalte mit zu benutzen wie kann man das machen ? der code sieht so aus :

 fstream d;
    d.open("generate.csv", ios:ut);
    for ( int x = 0; x < anzahl; x++)  d << puffer.at(randomzahlen.at(x)) +  puffer2.at(randomzahlen2.at(x)) ;

    d.close();


----------



## sheel (9. Februar 2010)

CSV steht für Comma separated Value; dh die einzelnen Spalten sind (bei Excel) mit ; getrennt


----------



## barti20 (9. Februar 2010)

hmm das habe ich acuh gelesen aber es geht net ausprobiert habe ich das hier : 

    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + ";"  puffer2.at(randomzahlen2.at(x)) ;
    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + "," puffer2.at(randomzahlen2.at(x)) ;

    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + ";" +  puffer2.at(randomzahlen2.at(x)) ;
    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + "," + puffer2.at(randomzahlen2.at(x)) ;

    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + ;  puffer2.at(randomzahlen2.at(x)) ;
    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + , puffer2.at(randomzahlen2.at(x)) ;

    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + ; + puffer2.at(randomzahlen2.at(x)) ;
    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + , + puffer2.at(randomzahlen2.at(x)) ;

    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + ; << puffer2.at(randomzahlen2.at(x)) ;
    for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + , << puffer2.at(randomzahlen2.at(x)) ;

aber nix hat funktioniert


----------



## Vereth (9. Februar 2010)

Probiere mal folgendes:

```
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) << ";" << puffer2.at(randomzahlen2.at(x)) << endl;
```

Wichtig ist, dass du deine Zeilen mit _endl_ abschließt. Ob dur zur Feldtrennung ein Semikolon verwendest oder ein anderes Zeichen, ist frei wählbar. Was du als Feldseparator benutzt hast, kannst du beim Einlesen in Excel angeben.


----------



## Barti20 (9. Februar 2010)

Das geht leider auch nicht er schreibt es immer noch unter einander  
also 

test27
test24

test8
test22

test6
test11

test24
test13

nur halt jetzt mit ner zelle leer dazwischen 
es soll ja sowas rauskommen : 

test27 test24

test8 test22

(per hand angeordnet)


----------



## deepthroat (9. Februar 2010)

Hi.





Barti20 hat gesagt.:


> Das geht leider auch nicht er schreibt es immer noch unter einander


Dann hast du falsch eingelesen bzw. in den Daten einen Zeilenumbruch drin. 


Barti20 hat gesagt.:


> also
> 
> test27
> test24
> ...


Das kann nicht so aussehen, da fehlen die Semikola. Hast du evtl. eine alte Version deines Programmes aufgerufen?

Verwende bitte die Code Tags für deine Codeschnipsel und Programmausgaben!

Gruß


----------



## Barti20 (9. Februar 2010)

Ha es hat funktioniert danke


----------

