Excel

Résolu
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008 - 26 mars 2008 à 10:45
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 26 mars 2008 à 17:11
Bonjour à tous,

Je voudrais savoir si quelqu'un sait où je pourrais trouver un bout de code qui me permettrait de ranger mes données, récupérées par un petit programme (et simplement affichées dans la console), dans un fichier excel.. afin de pouvoir effectuer des opérations sur les cellules...etc

Bonne journée !

9 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
26 mars 2008 à 10:54
Salut

Tu peux faire comme tu as l'habitude de faire: fopen("monfichier.xls","w");
Pour changer de colonne c'est \t et pour changer de ligne c'est \n

A+
Mon site internet : http://pistol.petesampras.free.fr
3
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
26 mars 2008 à 11:09
Ok je vais essayer Vincent. A tout hasard, tu n'as pas d'idées ou de suggestions à me proposer en ce qui concerne mon post sur MPlayer d'hier ... Tiens moi au courant.


Merci en tout cas, j'avais completement oublié que je pouvais ouvrir en lecture mais aussi en écriture ;-)
0
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
26 mars 2008 à 12:06
Hum j'ai fait exactement la même chose qu'auparavant mais ça n'écrit rien...
J'ai bien mis le fichier excel au même endroit que ma vidéo
J'ai déclaré un pointeur de fichier et l'ouverture du fichier excel.
Puis j'utilise un fwrite afin d'écrire les données qui m'intéresse dans mon fichier excel mais rien, ça n'écrit rien. Tu as une idée ?
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
26 mars 2008 à 12:22
Peux tu mettre ton code?

A+
Mon site internet : http://pistol.petesampras.free.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
26 mars 2008 à 12:31

Oui bien sûr, le voici : (il y a pas mal de commentaires car j'ai eu pas mal de mal, et donc je faisais constamment des tests)#include #include #include          #include          // Bibliothèques utiles#include #include #include #include #include #include #include

void find_TransportStream_synchro_bytes();void press_key(char press_key_text[]);               void exit_prog(char error_msg[]);                  void TransportStream_header_decode();void file_seek(int offset);void display_transport_header(void);void adaption_field(void);void PES_header_decode(void);

struct TransportStream_header                  {unsigned char synchronisation_byte;unsigned char transport_error_indicator;unsigned char payload_start_indicator;unsigned char transport_priority;      // Structure  de l'en-tête TS du flux MPEGunsigned int PID;unsigned char transport_scrambling_control;unsigned char adaptation_field_control;unsigned char continuity_counter;} TransportStream_header;
struct PES_header {unsigned int packet_start_code_prefix;unsigned int stream_id;char   stream_id_text[13];        // Structure de l'en-tête PES du flux MPEGunsigned int packet_length;unsigned int data_length;unsigned int timestamps_flags;unsigned int pts_dts_timestamps;} PES_header;

char version[] = "1.00";       // Numéro de versionunsigned int current_header_add = 0; // Ajout d'une en-tête décodée/affichéeint index = 0;       // index for found PID tableunsigned int search_PID = 0;   // PID value to search for, from command linelong int payload_start = 0;    // Ajout d'un payload_start si il est présentchar *ip_filepath;      // Récupération de la ligne de commande      char synchro_bytes[10];      // Stockage des octets de synchronisationint end_of_file = 0;     // Vérification de la fin du fichierunsigned char TS_raw_header[4];   // Espace de 4 octets pour lire les données du fichierunsigned char adaption_field_length;int ip_file_length;int choix_menu;unsigned char PES_raw_header[40]; // storage space for raw dataunsigned int video_stream_start = 0;

FILE *ip_file;FILE *op_file_xls;
//=======================Fonction-Principale=======================================================================================================================
int main(int argc, char *argv[])    { puts  ("\n\n================================"); puts  ("Decodeur MPEG : TS_decode.exe"); printf("David Gombert   Version : %s \n", version); puts  ("================================\n\n");
 FILE *ip_file=NULL; FILE *op_file_xls=NULL;    int i; char ip_filepath[10000];    int ip_file_length=0;  // Longueur du fichier    int size;      int end_of_file=0; int position_first_sync=0; int user_response = 0; int j=0;
    if (argc == 1)        //S'il n'y a pas d'argument, on demande à l'utilisateur d'entrer la chaine    {         printf("Entrer le chemin de la video:\n");        //scanf("%s",ip_filepath);                        //Attention n'accepte pas les espaces        gets(ip_filepath);                                   //Accepte tout jusqu'à l'appuie sur entrée    }    else        //entrée d'une chaine en argument du main (en passant par l'invite de commande)    {        strcpy(ip_filepath,&argv[1][0]);      //on recopie les arguments de la ligne de commande dans ip_filepath
    }
    ip_file = fopen(ip_filepath, "rb");   // Ouverture du fichier MPEG en lecture seule ("rb"=read binary) op_file_xls = fopen("decode_MPEG_header.xls", "w");
    if(ip_file==NULL) {                          printf("Erreur : Impossible d'ouvrir le fichier spécifié \n");      //test d'ouverture du fichier        exit(0); }    //system("pause");    fseek (ip_file , 0, SEEK_END);      //On se place a la fin du fichier    ip_file_length=ftell (ip_file );       //Retourne le nombre d'octets depuis le début du fichier jusqu'à la position du curseur(ici la fin)    rewind (ip_file);                        //on se replace au début du fichier

    printf("Ouverture du fichier MPEGx %s, contenant %ibytes...\n\n", ip_filepath, ip_file_length);    printf("\nVoici la liste des 100 premiers octets de ce flux MPEGx : \n\n");
    char *Buffer=new char[ip_file_length];    size=(int)fread(Buffer,1,ip_file_length,ip_file);   //TOUT le fichier est recopié dans le buffer        if(size != ip_file_length)    {        printf("Erreur de lecture\n" );        exit(0);    }    //fclose(ip_file);
    for(i=0;i résolu avec le cast  }    system("pause");
 //printf("test1:\n"); //printf("0x%x \n",Buffer[101]); //printf("0x%x \n",Buffer[289]); //printf("0x%x \n",Buffer[477]); //printf("0x%x \n",Buffer[665]); //printf("0x%x \n",Buffer[853]); //printf("0x%x \n",Buffer[1041]); //printf("0x%x \n",Buffer[1229]); //printf("0x%x \n",Buffer[1417]); //printf("0x%x \n",Buffer[1605]); //printf("0x%x \n",Buffer[1793]); //printf("0x%x \n",Buffer[1981]); //printf("0x%x \n",Buffer[2169]); //printf("0x%x \n",Buffer[2357]); //printf("0x%x \n",Buffer[2545]);
 //system("pause"); //printf("\nVerification: affichage du premier octet de synchronisation: 0x%x \n" , (unsigned char)Buffer[101]);    //system("pause"); // Trouve les octets de synchronisation 0x47:    //find_TransportStream_synchro_bytes();
//================================================
// Fonction qui trouve le premier octet de synchronisation 0x47 (à mettre au propre) :char valeur=71;int ordre=0;for(i=0;i
0
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
26 mars 2008 à 12:33
En fait, je voudrais faire un excel propre, qui me classe ce qui est contenu dans le tableau PES_raw_header[]...
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
26 mars 2008 à 16:55
Je ne vois pas trop pourquoi tu veux stokker dans un fichier excel alors que tu ne formates pas le texte! Tu veux copier un charactere sur chaque ligne?

Tu devrais plutot essayer:   fwrite(PES_raw_header, 1, sizeof(PES_rawheader), op_file_xls);      //sans formatage
ou alors fprintf() si tu veux formater.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
26 mars 2008 à 17:00
Que sous-entends tu par formater le texte ?
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
26 mars 2008 à 17:11
Par formater j'entend presenter et organiser le texte comme tu le souhaites.
Ton fwrite va ecrire tes 40 octets dans la meme cellule alors qu'en ecrivant quelque chose comme ca:

for(i=0;i<40;i++)
   fprintf(op_file_xls,"c\n",PES_raw_header[i]);

tu vas ecrire chaque octet dans une ligne differente

A+
Mon site internet : http://pistol.petesampras.free.fr
0
Rejoignez-nous