コード例 #1
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);
        }
コード例 #2
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);
        }