Lire à partir d'un fichier excel en C
Je veux lire depuis un fichier excel en C. Le fichier excel 2007 contient environ 6000 lignes et 2 colonnes. Je veux stocker le contenu dans un tableau 2d en C. Si il existe une bibliothèque C ou de toute autre méthode alors s'il vous plaît laissez-moi savoir.
vous pouvez l'exporter au format csv?
OriginalL'auteur parin | 2010-07-12
Vous devez vous connecter pour publier un commentaire.
Excel 2007 stocke les données dans un tas de fichiers, la plupart d'entre eux en XML, tous entassés dans un fichier zip. Si vous voulez voir le contenu, vous pouvez renommer votre
.xlsx
àwhatever.zip
et ensuite de l'ouvrir et de regarder les fichiers à l'intérieur.En supposant que votre fichier Excel contient uniquement des données brutes, et de tout ce qui vous intéresse est de le lire (c'est à dire, vous ne pas besoin/envie de mettre à jour son contenu et d'obtenir Excel pour ouvrir à nouveau), la lecture des données est en fait assez facile. Dans le fichier zip, vous êtes à la recherche pour le sous-répertoire
xl\worksheets\
, qui contiendra un certain nombre de.xml
fichiers, un pour chaque feuille de calcul Excel (par exemple, un classeur par défaut aura trois feuilles de calcul nomméesheet1.xml
,sheet2.xml
etsheet3.xml
).À l'intérieur de ceux-ci, vous êtes à la recherche pour le
<sheet data>
tag. À l'intérieur de cela, vous aurez<row>
balises (un pour chaque ligne de données), et à l'intérieur de leur<c>
balises avec un attributr=RC
oùRC
est remplacée par la ligne/colonne de notation (par exemple, "A1"). Le<c>
balise sera imbriquée<v>
balise où vous trouverez la valeur de cette cellule.Je me sens obligé d'ajouter un avertissement cependant: lors de la lecture de vraiment simple de données peuvent en effet être juste ce que c'est facile, la vie peut obtenir un beaucoup plus complexe dans un dépêchez-vous si vous décidez de faire beaucoup plus que la lecture simple des lignes/des colonnes de nombres. Essayer de faire quoi que ce soit même légèrement plus complexe que ce que peut obtenir un beaucoup plus complexe dans un hurry.
C'est tout superficiellement très facile ... MAIS: besoin d'examiner les
xl/_rels/workbook.xml.rels
flux dans le cas où l'utilisateur a battu la feuille de commande;<v>
élément pour le texte des cellules de vous donner un indice dans laxl/sharedStrings.xml
flux; les dates dans vos données? Vous voudrez peut-être regarder dans lexl/styles.xml
de flux et de décoder lesnum_format_str
pour savoir si votre flotte sont des dates ou des nombres et de regarder dans laxl/workbook.xml
flux en date de l'époque (1900 1904) et d'autres peut-être-utile-classeur niveau info;_xdead__xbeef_
style s'échapper de non-valides-les caractères XML.très excitant de voir le zip caché de fichier qui porte le masque de *.fichier xlsx. Wow!
OriginalL'auteur Jerry Coffin
Vous avez plusieurs choix:
1) Enregistrez votre feuille de calcul excel dans un fichier csv et d'analyser cela.
2) Utiliser l'API COM (Windows proprietary et délicat)
3) Voir ce lien pour une classe C++ que vous pouvez modifier.
Liés classe C++ n'apparaît que de travailler pour les plus âgés
.xls
format Excel 2007.xlsx
format. Il y a peu de ressemblance entre les formats.Mariani: L'OP veut lire des données Excel dans la mémoire; il ne veut pas de boucher et d'écrire à un pseudo-fichier CSV. Il doit utiliser
xlrd
directement [si il est heureux avec Python au lieu de C, et heureux, avec l'aide de l'alpha code pour la lecture de fichiers XLSX].OriginalL'auteur Romain Hippeau
Un autre C lib pour lire les données à partir de fichiers excel peuvent être trouvés ici.
OriginalL'auteur Praveen S