예제 #1
0
        /// <summary>
        /// Creer la table "traduire" la table au format CSV
        /// </summary>
        // On remarque que toutes les infos ne sont extraites du carnet d'adresse
        public static DataTable CreateTable()
        {
            ArrayList         entetes  = new ArrayList();
            ColonneCollection colonnes = new ColonneCollection(HeaderColumns);

            for (int i = 0; i < colonnes.Count; i++)
            {
                // Pas de ";" pour la derniere colonne
                if (i < colonnes.Count - 1)
                {
                    entetes.Add(colonnes[i].Nom + ";");
                }
                else
                {
                    entetes.Add(colonnes[i].Nom);
                }
            }

            DataTable dt = new DataTable();

            foreach (string entete in entetes)
            {
                DataColumn colonne = new DataColumn(entete, System.Type.GetType("System.String"));
                dt.Columns.Add(colonne);
            }

            PersonneCollection personnes = PersonneCollection.GetAll();

            foreach (Personne p in personnes)
            {
                DataRow dr;
                dr = dt.NewRow();

                dr[entetes[0].ToString()]  = p.Civilite + ";";
                dr[entetes[1].ToString()]  = p.Nom + ";";
                dr[entetes[2].ToString()]  = p.Prenom + ";";
                dr[entetes[3].ToString()]  = p.EmailBureau + ";";
                dr[entetes[4].ToString()]  = p.Adresse + ";";
                dr[entetes[5].ToString()]  = p.Ville + ";";
                dr[entetes[6].ToString()]  = p.CodePostal + ";";
                dr[entetes[7].ToString()]  = p.TelephonePerso + ";";
                dr[entetes[8].ToString()]  = p.TelephoneBureau + ";";
                dr[entetes[9].ToString()]  = p.TelephoneMobile + ";";
                dr[entetes[10].ToString()] = p.Fax + ";";
                dr[entetes[11].ToString()] = p.Societe + ";";
                dr[entetes[12].ToString()] = p.Fonction + ";";
                dr[entetes[13].ToString()] = p.LienHTML + ";";
                dr[entetes[14].ToString()] = p.Memo;     //+ ";";

                dt.Rows.Add(dr);
            }

            return(dt);
        }
예제 #2
0
        // Transforme la table en string
        public static string ImportFile(string fileName, ref PersonneCollection personnes)
        {
            string       erreurMessage = "";
            FileStream   fs            = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            StreamReader sr            = new StreamReader(fs, Encoding.UTF7);
            string       s             = sr.ReadToEnd();

            fs.Close();
            sr.Close();

            string[] separateurLigne = { "\"Non spécifié\"\r\n", "\"Utilisateur 4\"\r\n" }; // Une hyptohese risquee
            string[] lignes          = s.Split(separateurLigne, StringSplitOptions.RemoveEmptyEntries);
            if (lignes.Length <= 1)
            {
                erreurMessage = "Ce fichier n'est pas au format du carnet outlook.<br>";
                return(erreurMessage);
            }

            string entete = lignes[0];

            char[]   separteurValeur = { ',', '\"' };
            string[] entetes         = entete.Split(separteurValeur, StringSplitOptions.RemoveEmptyEntries);
            if (entetes.Length <= 1)
            {
                erreurMessage = "Ce fichier n'est pas au format du carnet outlook.<br>";
                return(erreurMessage);
            }

            // La deuxieme colonne Nom pose un probleme c'est le nom complet
            // mais on en veut pas d'ou ce caviardage par une colonne qui n'existe pas
            // entetes[ 3 ] = "aaaaaaaaa"; Non faut pas ya pas de non complet dans outlook de merde et si !! putain de bordel quelle merde enfin microsoft est donne son plein potentiel !!
            // outlook de merde on trouve 2 colonnes Titre une pour civlite ou autre pour ...
            // donc ici on ruse a mort

            ColonneCollection cc = new ColonneCollection(HeaderColumns);
            ColonneCollection colonnesExistantes = new ColonneCollection();

            if (entetes[0] == "Titre")
            {
                cc[0].Existe = true;
                cc[0].Indice = 0;
                colonnesExistantes.Add(cc[0]);
                cc.RemoveAt(0);
            }

            foreach (Colonne c in cc)
            {
                for (int i = 1; i < entetes.Length; i++)
                {
                    if (c.Nom.CompareTo(entetes[i]) == 0)
                    {
                        // La colonne existe dans le fichier
                        c.Existe = true;
                        c.Indice = i;
                        colonnesExistantes.Add(c);
                    }
                }
            }

            if (colonnesExistantes.Count <= 0)
            {
                erreurMessage = "Format de fichier non valide.<br>";
                return(erreurMessage);
            }

            //BRY00020100209
            if (SessionState.Limitations.LimitesInterviewesAtteinte(lignes.Length))
            {
                Tools.PageValidation("La limite du nombre d'Interviewés : " + SessionState.Limitations.NombreInterviewes + " est atteinte.<br/>Contactez l'administrateur.");
            }

            // Le split marche dans l'entete car on RemoveEmptyEntries
            // ici on ne peut pas le faire pour garder le bon indice de la place de la valeur
            // et donc on recommence ...
            string[] separateurVal = { "\",\"" };
            for (int i = 1; i < lignes.Length; i++)
            {
                string[] valeurs = lignes[i].Split(',');
                for (int v = 0; v < valeurs.Length; v++)
                {
                    valeurs[v] = SupprimeCaractereDeMerde(valeurs[v]);
                }

                Personne p = new Personne();
                foreach (Colonne c in colonnesExistantes)
                {
                    if (c.Existe)
                    {
                        if (c.Nom == HeaderColumns[0])
                        {
                            p.Civilite = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[1])
                        {
                            p.Nom = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[2])
                        {
                            p.Prenom = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[3])
                        {
                            p.Societe = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[4])
                        {
                            p.Fonction = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[5])
                        {
                            p.EmailPerso = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[6])
                        {
                            p.EmailBureau = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[7])
                        {
                            p.Adresse = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[8])
                        {
                            p.Ville = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[9])
                        {
                            p.CodePostal = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[10])
                        {
                            p.TelephonePerso = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[11])
                        {
                            p.TelephoneBureau = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[12])
                        {
                            p.TelephoneMobile = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[13])
                        {
                            p.Fax = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[14])
                        {
                            p.LienHTML = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[15])
                        {
                            p.Memo = valeurs[c.Indice];
                        }
                    }
                }

                if (personnes == null)
                {
                    int ret = Personne.Create(p, true, ref erreurMessage);
                }
                else
                {
                    personnes.Add(p);
                }
            }

            return(erreurMessage);
        }
예제 #3
0
        // Creer la table "traduire" la table au format Outlook
        public static DataTable CreateTable()
        {
            ArrayList entetes = new ArrayList();

            // Creer artificiellement une colonne "Titre" vide !
            // on lui baise la gueule a outlook de merde avec son format pourri
            // on remarquera l'espace dans le titre de la colonne sinon erreur :
            // elle existe deja dans le DataTable et c'est la cata ca voudrait
            // qu'on ne peut pas utiliser un DataTable mais ca marche alors
            //entetes.Add( "\"Titre \"," );

            ColonneCollection colonnes = new ColonneCollection(HeaderColumns);

            for (int i = 0; i < colonnes.Count; i++)
            {
                // Pas de "," pour la derniere colonne
                if (i < colonnes.Count - 1)
                {
                    entetes.Add("\"" + colonnes[i].Nom + "\",");
                }
                else
                {
                    entetes.Add("\"" + colonnes[i].Nom + "\"");
                }
            }

            DataTable dt = new DataTable();

            foreach (string entete in entetes)
            {
                DataColumn colonne = new DataColumn(entete, System.Type.GetType("System.String"));
                dt.Columns.Add(colonne);
            }

            PersonneCollection personnes = PersonneCollection.GetAll();

            foreach (Personne p in personnes)
            {
                DataRow dr;
                dr = dt.NewRow();

                dr[entetes[0].ToString()]  = "\"" + p.Civilite + "\",";
                dr[entetes[1].ToString()]  = "\"" + p.Nom + ", " + p.Prenom + "\",";
                dr[entetes[2].ToString()]  = "\"" + p.Prenom + "\",";
                dr[entetes[3].ToString()]  = "\"" + p.Societe + "\",";
                dr[entetes[4].ToString()]  = "\"" + p.Fonction + "\",";
                dr[entetes[5].ToString()]  = "\"" + p.EmailPerso + "\",";
                dr[entetes[6].ToString()]  = "\"" + p.EmailBureau + "\",";
                dr[entetes[7].ToString()]  = "\"" + p.Adresse + "\",";
                dr[entetes[8].ToString()]  = "\"" + p.Ville + "\",";
                dr[entetes[9].ToString()]  = "\"" + p.CodePostal + "\",";
                dr[entetes[10].ToString()] = "\"" + p.TelephonePerso + "\",";
                dr[entetes[11].ToString()] = "\"" + p.TelephoneBureau + "\",";
                dr[entetes[12].ToString()] = "\"" + p.TelephoneMobile + "\",";
                dr[entetes[13].ToString()] = "\"" + p.Fax + "\",";
                dr[entetes[14].ToString()] = "\"" + p.LienHTML + "\",";
                dr[entetes[15].ToString()] = "\"" + p.Memo + "\"";     // pas de virgule pour la derniere valeur

                dt.Rows.Add(dr);
            }

            return(dt);
        }
예제 #4
0
        /// <summary>
        /// Lecture du fichier au format CVS creation d'une personne
        /// </summary>
        /// <param name="fileName">le fichier</param>
        /// <param name="personnes">collection de personnes si null on cree dans la database</param>
        /// <returns></returns>
        public static string ImportFile(string fileName, ref PersonneCollection personnes)
        {
            string       erreurMessage = "";
            FileStream   fs            = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            StreamReader sr            = new StreamReader(fs, Encoding.UTF7);
            string       s             = sr.ReadToEnd();

            fs.Close();
            sr.Close();

            string separateurDOS  = "\r\n";
            string separateurUnix = "\r";

            if (s.Contains(separateurDOS) == false)
            {
                if (s.Contains(separateurUnix) == false)
                {
                    erreurMessage = "Ce fichier n'est ni au format Unix ni au format DOS.<br>";
                    return(erreurMessage);
                }
                erreurMessage += "Conversion du fichier Unix vers DOS.<br>";
                s              = Strings.UnixToDos(s);
            }

            string[] separateur = { "\r\n" };
            string[] lignes     = s.Split(separateur, System.StringSplitOptions.None);
            string   entete     = lignes[0];

            string[] entetes = entete.Split(';');

            if (entetes.Length <= 2)
            {
                erreurMessage = "Ce fichier n'est pas au format du carnet d'adresses.<br>";
                return(erreurMessage);
            }

            // La deuxieme colonne Nom pose un probleme c'est le nom complet
            // mais on n'en veut pas d'ou ce caviardage par une colonne qui n'existe pas
            // sauf si le fichier vient d'excel dans ce cas on ne ve pas faire chier l'utilisateur !
            //if ( entetes.Length > 3 ) entetes[ 3 ] = "aaaaaaaaa"; RAS LE BOL JE SAIS PLUS

            ColonneCollection cc = new ColonneCollection(HeaderColumns);
            ColonneCollection colonnesExistantes = new ColonneCollection();

            // Enregistrer les colonnes qui existent
            for (int i = 0; i < entetes.Length; i++)
            {
                foreach (Colonne c in cc)
                {
                    if (c.Nom.CompareTo(entetes[i]) == 0)
                    {
                        // La colonne existe dans le fichier
                        c.Existe = true;
                        c.Indice = i;
                        colonnesExistantes.Add(c);
                    }
                }
            }

            if (colonnesExistantes.Count <= 0)
            {
                erreurMessage = "Format de fichier non valide.<br>";
                return(erreurMessage);
            }

            //BRY00020100209
            if (SessionState.Limitations.LimitesInterviewesAtteinte(lignes.Length))
            {
                Tools.PageValidation("La limite du nombre d'Interviewés : " + SessionState.Limitations.NombreInterviewes + " est atteinte.<br/>Contactez l'administrateur.");
            }

            // La derniere ligne peut etre vide
            for (int i = 1; i < lignes.Length && lignes[i] != ""; i++)
            {
                // Incroyable on voit Excel de daube qui met des ';' a lin de la ligne
                // mais il s'arrete au bout de 15 lignes et il en met plus !!!
                string[] essai = lignes[i].Split(';');
                if (essai.Length < colonnesExistantes.Count)
                {
                    // Il manque une colonne !
                    // Donc on ajoute une colonne vide !
                    lignes[i] = lignes[i] + ";";
                }

                string[] valeurs = lignes[i].Split(';');

                Personne p = new Personne();

                foreach (Colonne c in colonnesExistantes)
                {
                    if (c.Existe)
                    {
                        if (c.Nom == HeaderColumns[0])
                        {
                            p.Civilite = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[1])
                        {
                            p.Nom = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[2])
                        {
                            p.Prenom = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[3])
                        {
                            p.EmailBureau = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[4])
                        {
                            p.Adresse = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[5])
                        {
                            p.Ville = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[6])
                        {
                            p.CodePostal = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[7])
                        {
                            p.TelephonePerso = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[8])
                        {
                            p.TelephoneBureau = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[9])
                        {
                            p.TelephoneMobile = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[10])
                        {
                            p.Fax = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[11])
                        {
                            p.Societe = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[12])
                        {
                            p.Fonction = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[13])
                        {
                            p.LienHTML = valeurs[c.Indice];
                        }
                        if (c.Nom == HeaderColumns[14])
                        {
                            p.Memo = valeurs[c.Indice];
                        }
                    }
                }

                if (personnes == null)
                {
                    int ret = Personne.Create(p, true, ref erreurMessage);
                }
                else
                {
                    personnes.Add(p);
                }
            }

            return(erreurMessage);
        }