Array Messdaten in Exceldatei speichern



  • Abgesehen davon, dass das keine Schlüsselwörter sind... :p
    @TE: In C gibt es all das nicht.



  • Danke für die Hilfe



  • Also ich versuche es nocheinmal mein Problem genauer zu beschreiben.

    Ich mache eine Messung diese Messung ergibt ein Array in dem 16384 Werte abgespeichert werden.

    Diese Messung wird dann X-Mal durchgeführt

    Alle Messdaten also (15000 * X )Werte sollen in eine Excel datei geschrieben werden.

    Ich hatte vorher den Code von dem Werner Salomon abgeschrieben, ist ja nicht verboten, um erstmal zu gucken wie das genau funktioniert.
    Mit einzelnen Werten habe ich auch kein Problem und den Code verstehe ich.
    Ich weiß nur nicht wie man das bei (15000 * X )Werten machen kann.

    Ich dachte ein forum ist dazu da um Fragen zu stellen und nicht ständig angemacht zu werden..

    Ich hatte mein problem im C Bereich gepostet weil ich ansonsten keine Klassen etc benutze. Und weil mien problem ja schon in die Richtung geht, ich wollte außerdem nicht wegen jeder Kleinigkeit ein neues Thema aufmachen...

    Evtl ist ja noch jemand nettes im Forum der einen nicht gleich rund macht wenn man Fragen stellt.


  • Mod

    Es ist unklar, womit du ein Problem hast. Darum kann dir auch keiner helfen. Du hast eine Reihe Werte, willst diese in eine Datei schreiben. Mach eine Schleife, schreib die Werte raus! An welcher Stelle davon kommst du nicht weiter?



  • ABCD schrieb:

    Alle Messdaten also (15000 * X )Werte sollen in eine Excel datei geschrieben werden.

    .. Du hast noch nicht gesagt wie das geschehen soll.

    Sollen später alle Werte einer Messung in einer eigenen Spalte stehen? Also Spalte-A enthält die Werte der 1.Messung, Spalte-B die der 2.Messung usw.
    Oder können alle Werte in Spalte-A stehen - dann eben in 15000 * X (oder 0x4000 * 😵 Zeilen unter einander?

    Oder vielleicht ganz anders?



  • Hallo

    also ich möchte meine verschiedenen Messungen in verschiedenen Spalten speichern. Damit ich diese datei später mit matlab auslesen kann.

    ich habe das ganze jetzt so realisiert

    #define ANZAHL_ZEILEN 500		
    #define ANZAHL_SPALTEN 2	
    #define SPALTENBREITE 5
    #define ANZAHL_ZEILENENDE 2
    
    FILE *fp=fopen("C:/Messergebnis.txt","w"); //Dateipfad
    	long pos;
    	int s,z;
    
    	for (s=0;s<ANZAHL_SPALTEN;s++)
    	{
    		for(z=0;z<ANZAHL_ZEILEN;z++)
    		{
    			pos=z*(ANZAHL_SPALTEN*SPALTENBREITE+ANZAHL_ZEILENENDE)+SPALTENBREITE*s;
    			//fseek(fp,pos,SEEK_SET);
    			fprintf(fp, "%*d", SPALTENBREITE,wert[s][z]);
    
    			if(s==ANZAHL_SPALTEN-2)
    			{
    				fprintf(fp,"\n");
    			}
    
    			if(s==ANZAHL_SPALTEN-1)
    			{
    				fprintf(fp,"\n");
    			}
    		}
    		fclose(fp);
    		return 0;
    
    	}
    

    es funktioniert allerdings nur für 1 Spalte
    sobald ich eine zweite hinzu nehmen schreibt er alles in die 1ste Zeile.

    weiß einer einen Rat? 😕


  • Mod

    for (zeilen)
    {
      for (spalten)
      {
        Gib aus wert(zeile,spalte);
        Gib aus Trennzeichen;
      }
      Gib aus Zeilenumbruch;
    }
    


  • Darauf bin ich auch gekommen ... es funktioniert aber nicht ^^


  • Mod

    ABCD schrieb:

    Darauf bin ich auch gekommen ... es funktioniert aber nicht ^^

    Dann zeig doch mal, wie du das versuchst hast. Der Code den du gezeigt hast, hat mit meinem einfachen (und richtigen) Algorithmus nicht einmal entfernt zu tun, wie man schon auf den ersten Blick anhand der Schleifenstruktur sehen kann.



  • ABCD schrieb:

    weiß einer einen Rat? 😕

    Ja ... mach' es so, wie es SeppJ bereits im Prinzip vorgeschlagen hat. Wenn es ok ist, alle Werte aller Messreihen in einem Array wert[X][0x4000] zu speichern, so kannst Du sie am Ende so ausgeben, nachdem alle Messungen aufgenommen sind:

    #include <cstdio>
    #include <cstdlib>
    
    #define ANZAHL_ZEILEN 500      
    #define ANZAHL_SPALTEN 2   
    #define SPALTENBREITE 5
    
    int main()
    {
        int wert[ANZAHL_SPALTEN][ANZAHL_ZEILEN]; // ich unterstelle mal, 'wert' ist vom Typ int[][]
        // ... array 'wert' füllen
        FILE *fp=fopen("C:/Messergebnis.txt","w"); //Dateipfad
        int s,z;
        for(z=0;z<ANZAHL_ZEILEN;++z)
        {
            for (s=0;s<ANZAHL_SPALTEN;++s)
            {
                fprintf(fp, " %*d", SPALTENBREITE,wert[s][z]); // mit <Space> als Trennzeichen
            }
            fprintf(fp,"\n");
        }
        fclose(fp);
        return 0;
    }
    

    später kannst Du die Datei C:/Messergebnis.txt in Excel (als Textdatei!) öffnen und als Trennzeichen gibst Du 'Leerzeichen' an.

    Gruß
    Werner



  • Habe das problem gelöst

    ich musste die Spaltenbreite erhöhen weil die Werte nicht reingepasst haben, und ich dachte das wäre ienfach nur der Abstand zwischen den Werten 🤡

    Danke an alle


Anmelden zum Antworten