2017-03-24 4 views
0

I C-Programm verwendet, in eine Excel-Datei zu schreiben, und es funktionierte für beide (.xls & .xlsx)Lesen einer Excel-Datei von C

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char const *argv[]) 
{ 
    FILE * fpointer; 
    fpointer = fopen ("cfile.xls","w"); 

    fprintf(fpointer, "Name \t MIT 801\t MIT 802\t MIT 803\t MIT 805\t MIT 821 \n Haphyz\t 90\t 89\t 99\t 95\t 96\n"); 

    fclose(fpointer); 


} 

Ich habe auch versucht, von ihm zu lesen und es funktionierte auch:

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char const *argv[]) 
{ 
    FILE * fpointer; 

    fpointer = fopen ("cfile.txt","r"); 

    char Creader[200]; 
    while (!feof(fpointer)){ 
     fgets (Creader,200,fpointer); 
     puts (Creader); 

    } 
     fclose(fpointer); 

    return 0; 
} 

Jetzt versuche ich C-Programm zu verwenden, um eine Excel-Datei zu lesen, die von dem Computer erstellt wurden (nicht aus C), aber alles, was ich bekommen ist Kauderwelsch ... nichts sinnvoll für beide .xls and .xlsx dann habe ich beschlossen, Verwenden Sie das Format .csv, das funktionierte, aber nur in der Lage war, nur th zu lesen Die erste Zeile des Excel-Blattes. Bitte, wie gehe ich vor?

+4

Sie nie eine Excel-Datei in meinem Code suchen schrieben besser

Vielen Dank für Ihre contributions.I'll sicher. – Blindy

+1

xls und xlsx Dateien sind unterschiedliche Formate, und keiner von ihnen würde die von Ihnen geschriebene Zeichenkette unterstützen. Eine xlsx-Datei ist beispielsweise eine Datei im PKZ-Format. Sie müssten dafür eine Bibliothek wie 'libxl' verwenden. – bruceg

+0

* eine Excel-Datei, die vom Computer erstellt wurde (nicht von C) * wo führen Sie Ihren C-Code aus? –

Antwort

0

Ich habe das Problem gelöst, das .csv Format funktioniert gut das Problem war mit meinem Code. Ich habe die Datei innerhalb der Schleife geschlossen, sodass das Programm nach der ersten Zeile nicht mehr gelesen werden kann.

#include <stdio.h> 
#include <stdlib.h> 


int main(int argc, char const *argv[]) 
{ 

    FILE * fpointer;  
    fpointer = fopen("Book1.csv","r"); 
    char spreadSheet[200]; 

    while(!feof(fpointer)){ 
    fgets(spreadSheet,200,fpointer); 
    fprintf(stderr, "%s\n", spreadSheet); 

    fclose(fpointer); 

    } 


    return 0; 
} 

Es gibt keine Möglichkeit, dies eine Fehlermeldung zurückgeben würde, so dass es ausgedruckt, was ich angewiesen, sie zu. beim nächsten Mal