コード例 #1
0
        /// <summary>
        /// Ajoute les données d'une colonne non liées au Business
        /// </summary>
        private string AddInfoColDatas()
        {
            string additionalData = String.Empty;

            XtraInfoCols.ForEach(
                col =>
            {
                // Ajouter des cases en fonction de ce qu'on veut ajouter - Attention, cela ne concerne pas les données du métier...
                switch (col)
                {
                case "WORKSHEET_NAME":
                    additionalData += this.separator + WorkSheet;
                    break;

                // Copier, coller, décommenter et compléter le code suivant - 1 case par colonne supplémentaire....

                //case "Nouvelle Colonne" :
                //additionalData += this.separator + "Donnée de la colonne à ajouter à la ligne";
                //break;

                case "Date_Jour":
                    additionalData += this.separator + DateTime.Now.ToString("MM/dd/yyyy");
                    break;

                default:
                    additionalData += this.separator + "Sourcer la donnée dans le plugin !!!";
                    break;
                }
            }
                );

            return(additionalData);
        }
コード例 #2
0
        /// <summary>
        /// Constructeur de lignes issues d'Excel
        /// </summary>
        /// <param name="xlCells">Dictionnaire de cellules Excel</param>
        /// <param name="topLine">Ligne Excel de début de lecture</param>
        /// <param name="endLine">Ligne Excel de fin de lecture</param>
        /// <param name="nzHeaders">Liste des ranges des entêtes de colonne</param>
        /// <returns>Renvoi la liste des lignes construites</returns>
        private List <string> BuildLines(Dictionary <Tuple <int, int>, Object> xlCells, int topLine, int endLine, List <ExcelNamedRange> nzHeaders)
        {
            List <string>  matchedDatas = new List <string>();
            StringBuilder  rowData      = null;
            ExcelWorksheet ws           = nzHeaders[0].Worksheet;

            // Parcours des lignes de l'onglet Excel
            for (int numLig = topLine; numLig < endLine; numLig++)
            {
                string xlValue;

                #region Parcours des colonnes de la ligne

                // Parcours des colonnes Excel taguées par la zone nommée RE_X
                foreach (ExcelNamedRange namedZone in nzHeaders)
                {
                    // Récupération de la cellule située en ligne : numLig et en colonne : col RE_X
                    Object xlCel = xlCells.FirstOrDefault(kvp => kvp.Key.Item1 == numLig && kvp.Key.Item2 == namedZone.Start.Column).Value;
                    // Récupération de la valeur de la cellule
                    xlValue = xlCel == null ? String.Empty : String.Format(CultureInfo.CurrentCulture, xlCel.ToString().Trim());

                    // Si on se situe sur la colonne Building et que la valeur est nulle => on ignore la ligne lue (Règle de gestion) en passant  à la suivante
                    if (ws.Cells[namedZone.Name].Text.Trim().StartsWith("Building", StringComparison.Ordinal) && String.IsNullOrEmpty(xlValue))
                    {
                        if (rowData != null)
                        {
                            rowData = null;
                        }
                        break;
                    }

                    // Recherche du séparateur décimal ','
                    if (!string.IsNullOrEmpty(xlValue) && xlValue.Contains(','))
                    {
                        // Conversion des montants avec un séparateur décimal '.'
                        double testRes = Double.NaN;
                        if (double.TryParse(xlValue, NumberStyles.Any, CultureInfo.CurrentCulture, out testRes))
                        {
                            xlValue = testRes.ToString().Replace(',', '.');
                        }
                    }

                    // Initialisation du buffer avec la première valeur de la ligne et de la colonne
                    if (rowData == null)
                    {
                        rowData = new StringBuilder();
                        rowData.Append(xlValue);
                    }
                    else
                    {
                        // Ajoût du séparateur et de la valeur de la colonne au buffer
                        rowData.Append(this.separator.ToString() + xlValue);
                    }
                }
                #endregion

                if (rowData != null && rowData.ToString().Length > 0)
                {
                    #region Gestion de l'ajout des colonnes non liées au business

                    // SVE - 15/02/2017 - Ajoût des données de colonne(s) informelle(s)
                    if (XtraInfoCols.FirstOrDefault() != null)
                    {
                        rowData.Append(this.AddInfoColDatas());
                    }
                    #endregion

                    // Ajout de la ligne à la collection de lignes
                    matchedDatas.Add(rowData.ToString());
                    // Flush du buffer
                    rowData = null;
                }
            }
            return(matchedDatas);
        }
コード例 #3
0
        /// <summary>
        /// Ajoute des zones nommées de feuille Excel
        /// </summary>
        /// <param name="wkb">Classeur Excel</param>
        private void AddColumnsNames(ExcelWorkbook wkb, out string header)
        {
            int           cpt = 0;
            StringBuilder ch  = null;
            string        entete;

            // Parcours de la table de correspondance entre les colonnes d'onglets Excel
            foreach (DataRow hd in this.mappedCols)
            {
                cpt += 1;

                // Ajoût des zones nommées sur l'onglet 'RE INVESTMENT'
                this.AddName2Sheet(
                    hd[1].ToString().Trim(),
                    wkb.Worksheets[this.sheetNames[0]],
                    "RE_" + cpt.ToString()
                    );

                // Ajoût des zones nommées sur l'onglet 'RE INVESTMENT ON USE'
                this.AddName2Sheet(
                    hd[2].ToString().Trim(),
                    wkb.Worksheets[this.sheetNames[1]],
                    "RE_" + cpt.ToString()
                    );

                // Construction d'une En-tête commune aux onglets - Si l'alias est présent alors il sert d'en-tête aux colonnes
                if (!String.IsNullOrEmpty(hd["ALIAS_COL"].ToString().Trim()))
                {
                    entete = hd["ALIAS_COL"].ToString().Trim();
                }
                else
                {
                    // En-tête - Si l'alias est absent et que les en-têtes sont identiques alors le nom commun sert d'en-tête
                    if (hd["RE_INVESTMENT"].ToString().Contains(hd["RE_OWN_USE"].ToString().Trim()))
                    {
                        entete = hd["RE_OWN_USE"].ToString().Trim();
                    }
                    else
                    {
                        // En-tête - Si l'alias est absent et que les en-têtes sont différentes alors l'en-tête est la concaténation des 5 premiers caractères de chacunes
                        entete = hd["RE_INVESTMENT"].ToString().Trim().Substring(0, 5).Trim() + "&&" + hd["RE_OWN_USE"].ToString().Trim().Substring(0, 5).Trim();
                    }
                }
                // Initialisation du buffer d'en-tête
                if (ch == null)
                {
                    // Ajoût de la première colonne d'en-tête
                    ch = new StringBuilder();
                    ch.Append(entete);
                }
                else
                {
                    // Ajoût du séparateur et  de l'en-tête suivante
                    ch.Append(this.separator.ToString() + entete);
                }
            }
            // SVE - 15/02/2017 - Ajoût de colonne(s) informelle(s) dans le header
            if (XtraInfoCols != null && xtraInfoCol.Count() > 0)
            {
                XtraInfoCols.ForEach(
                    col => ch.Append(this.separator.ToString() + col)
                    );
            }
            header = ch.ToString();
        }