コード例 #1
0
        /// <summary>
        /// Riconoscimento se il formato usato per la seconda tipologia per il foglio corrente è effettivamente valida per
        /// il riconoscimento del foglio corrente come formato 2
        /// Viene quindi restituito l'array dei parametri che viene eventualmente riconosciuto dall'analisi
        /// </summary>
        /// <param name="currentSheet"></param>
        /// <param name="listaParametriRiconosciuti"></param>
        /// <returns></returns>
        private bool RecognizeTipoFoglio_Format2(ExcelWorksheet currentSheet)
        {
            // inizializzazione per il foglio corrente
            Excel_AlloyInfo_Sheet RecognizedInfo;


            // analisi per il foglio corrente
            Constants_Excel.EsitoRecuperoInformazioniFoglio esitoLetturaFoglioSecondoFormato = ExcelRecognizers.Recognize_Format2_InfoLegheConcentrazioni(
                ref currentSheet,
                out RecognizedInfo);

            if (esitoLetturaFoglioSecondoFormato == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings ||
                esitoLetturaFoglioSecondoFormato == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoCorretto)
            {
                // fisso la categoria per il foglio corrente e ritorno
                RecognizedInfo.GetTipologiaFoglio = Constants_Excel.TipologiaFoglio_Format.FoglioLegheConcentrazioni;

                // aggiunta del foglio corrente
                CommonMemList.InformazioniFoglioExcelOrigine.Add(RecognizedInfo);

                return(true);
            }

            return(false);
        }
コード例 #2
0
        /// <summary>
        /// Riconoscimento di una delle 2 tipologie per il formato 1 di fogli presenti nel file excel
        /// quindi si puo trattare di un foglio di informazioni di lega o di concentrazioni per queste
        /// </summary>
        /// <param name="currentSheet"></param>
        /// <param name="listaParametriRiconosciuti"></param>
        /// <returns></returns>
        private Constants_Excel.TipologiaFoglio_Format RecognizeTipoFoglio_Format1(ExcelWorksheet currentSheet)
        {
            // inizializzazione del foglio in lettura corrente
            Excel_AlloyInfo_Sheet recognizedInfoOnSheet;

            // tentativo di lettura delle informazioni relativamente al formato di lega
            Constants_Excel.EsitoRecuperoInformazioniFoglio riconoscimentoLeghe = ExcelRecognizers.Recognize_Format1_InfoLeghe(ref currentSheet, out recognizedInfoOnSheet);

            // ho riconosciuto correttamente il foglio come foglio di leghe
            if (riconoscimentoLeghe == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings ||
                riconoscimentoLeghe == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoCorretto)
            {
                // attribuzione tipologia lega
                recognizedInfoOnSheet.GetTipologiaFoglio = Constants_Excel.TipologiaFoglio_Format.FoglioLeghe;

                CommonMemList.InformazioniFoglioExcelOrigine.Add(recognizedInfoOnSheet);

                return(Constants_Excel.TipologiaFoglio_Format.FoglioLeghe);
            }


            // se mi trovo qui è perché non sono ancora riuscito a distinguere per il foglio corrente
            Constants_Excel.EsitoRecuperoInformazioniFoglio riconoscimentoConcentrazioni = ExcelRecognizers.Recognize_Format1_InfoConcentrations(ref currentSheet, out recognizedInfoOnSheet);

            if (riconoscimentoConcentrazioni == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings ||
                riconoscimentoConcentrazioni == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoCorretto)
            {
                // attribuzione tipologia concentrazioni
                recognizedInfoOnSheet.GetTipologiaFoglio = Constants_Excel.TipologiaFoglio_Format.FoglioConcentrazioni;
                CommonMemList.InformazioniFoglioExcelOrigine.Add(recognizedInfoOnSheet);

                return(Constants_Excel.TipologiaFoglio_Format.FoglioConcentrazioni);
            }

            // attribuzione tipologia indefinita
            recognizedInfoOnSheet.GetTipologiaFoglio = Constants_Excel.TipologiaFoglio_Format.NotDefined;
            // nel caso in cui mi trovassi a non avere nessun riconoscimento per entrambi i formati il foglio non viene preso in considerazione ma solamente
            // i diversi errori / warnings di generazione durante l'analisi
            return(Constants_Excel.TipologiaFoglio_Format.NotDefined);
        }
コード例 #3
0
        /// <summary>
        /// Lettura delle informazioni contenute nel file excel corrente in base al formato inserito per il file excel corrente,
        /// in particolare in base alla tipologia si deciderà se recuperare le informazioni in un modo piuttosto che in un altro
        /// </summary>
        /// <returns></returns>
        public bool ReadExcelInformation()
        {
            #region RECUPERO INFORMAZIONI PER IL PRIMO FORMATO


            // fogli compilati con le nuove informazioni
            List <Excel_AlloyInfo_Sheet> newFilledSheets = new List <Excel_AlloyInfo_Sheet>();


            // caso in cui il file è di primo formato
            if (_formatoExcel == Constants.FormatFileExcel.DatabaseLeghe)
            {
                foreach (Excel_AlloyInfo_Sheet currentFoglioExcel in CommonMemList.InformazioniFoglioExcelOrigine)
                {
                    // recupero del foglio corrente contenuto nel file di riferimento e dal quale continuare la lettura delle informazioni
                    ExcelWorksheet excelSheetReference = _openedExcel.Workbook.Worksheets[currentFoglioExcel.GetPosSheet];

                    // foglio relativo alle informazioni compilate
                    Excel_AlloyInfo_Sheet filledInfo;

                    // riconoscimenti per la lettura del foglio delle leghe
                    if (currentFoglioExcel.GetTipologiaFoglio == Constants_Excel.TipologiaFoglio_Format.FoglioLeghe)
                    {
                        // esito di recupero informazioni per il foglio corrente
                        Constants_Excel.EsitoRecuperoInformazioniFoglio esitoRecuperoInformazioniFoglioFormato1Corrente = ExcelReaderInfo.ReadLegheInfo(
                            excelSheetReference,
                            currentFoglioExcel,
                            out filledInfo);


                        if ((esitoRecuperoInformazioniFoglioFormato1Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoCorretto) ||
                            (esitoRecuperoInformazioniFoglioFormato1Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings))
                        {
                            // segnalazione di avvenuta lettura per il foglio corrente a console
                            ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioTipoFormato1AvvenutaCorrettamente(excelSheetReference.Name, currentFoglioExcel.GetPosSheet, currentFoglioExcel.GetTipologiaFoglio);

                            // segnalazione di eventuale recupero con warnings
                            if (esitoRecuperoInformazioniFoglioFormato1Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings)
                            {
                                ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioFormato1AvvenutaConWarnings(excelSheetReference.Name);
                            }

                            // aggiunta del foglio con le nuove informazioni all'interno della lista finale dei fogli informazioni
                            newFilledSheets.Add(filledInfo);
                        }
                        // segnalazione che le informazioni di lega corrente sono state recuperate con degli errori
                        else
                        {
                            // oltre la segnalazione non c'è bisogno di aggiungere il foglio al nuovo set in quanto non piu valido
                            ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioFormato1AvvenutaConErrori(excelSheetReference.Name, currentFoglioExcel.GetPosSheet, currentFoglioExcel.GetTipologiaFoglio);
                        }
                    }
                    // riconoscimento per la lettura del foglio delle concentrazioni
                    else if (currentFoglioExcel.GetTipologiaFoglio == Constants_Excel.TipologiaFoglio_Format.FoglioConcentrazioni)
                    {
                        // esito di recupero informazioni per il foglio corrente
                        Constants_Excel.EsitoRecuperoInformazioniFoglio esitoRecuperoInformazioniFoglioFormato1Corrente = ExcelReaderInfo.ReadConcentrationsInfo(
                            excelSheetReference,
                            currentFoglioExcel,
                            out filledInfo);

                        // nel caso in cui ho recuperato il foglio ma con degli errori allora non vado a leggerne ulteriormente le informazioni
                        if (!(esitoRecuperoInformazioniFoglioFormato1Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConErrori))
                        {
                            // segnalazione di avvenuta lettura per il foglio corrente a console
                            ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioTipoFormato1AvvenutaCorrettamente(excelSheetReference.Name, currentFoglioExcel.GetPosSheet, currentFoglioExcel.GetTipologiaFoglio);

                            // segnalazione di eventuale recupero con warnings
                            if (esitoRecuperoInformazioniFoglioFormato1Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings)
                            {
                                ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioFormato1AvvenutaConWarnings(excelSheetReference.Name);
                            }

                            // aggiunta del foglio con le nuove informazioni all'interno della lista finale dei fogli informazioni
                            newFilledSheets.Add(filledInfo);
                        }
                        // segnalazione che le informazioni di concentrazione corrente sono state recuperate con degli errori
                        else
                        {
                            // oltre la segnalazione non c'è bisogno di aggiungere il foglio al nuovo set in quanto non piu valido
                            ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioFormato1AvvenutaConErrori(excelSheetReference.Name, currentFoglioExcel.GetPosSheet, currentFoglioExcel.GetTipologiaFoglio);
                        }
                    }
                }


                // fine iterazione corrente: vado ad eseguire il controllo da quanti fogli ho recuperato effettivamente informazioni utili
                // se il numero dei fogli per i quali le informazioni non sono state recuperate correttamente è 0, non posso proseguire con l'analisi
                if (newFilledSheets.Count() == 0)
                {
                    return(false);
                }



                // tra il set di fogli recuperati deve essercene almeno uno di materiali e uno di concentrazioni per poter continuare correttamente l'analisi
                // TODO: mettere questo controllo anche in fase di validazione per i fogli sul formato corrente
                if (
                    newFilledSheets.Where(x => x.GetTipologiaFoglio == Constants_Excel.TipologiaFoglio_Format.FoglioLeghe).Count() == 0 ||
                    newFilledSheets.Where(x => x.GetTipologiaFoglio == Constants_Excel.TipologiaFoglio_Format.FoglioConcentrazioni).Count() == 0)
                {
                    // segnalazione di prossima interruzione del tool per mancanza di tutti i fogli necessari
                    ConsoleService.ConsoleExcel.ExcelReaders_Message_InterruzioneAnalisi_SetFogliRiconosciutiInsufficiente(ServiceLocator.GetUtilityFunctions.GetFileName(Constants.ExcelSourcePath));

                    return(false);
                }

                // attribuzione del nuovo valore per i files recuperati per il formato corrente
                CommonMemList.InformazioniFoglioExcelOrigine = newFilledSheets;

                // per gli altri casi ritorno true in quanto il recupero si è concluso correttamente
                return(true);
            }

            #endregion


            #region RECUPERO INFORMAZIONI DAL SECONDO FORMATO

            // caso in cui il file è di secondo formato
            else if (_formatoExcel == Constants.FormatFileExcel.Cliente)
            {
                // introduzione della variabile per inserire i fogli 2 con le informazioni correntemente recuperate per questo step
                List <Excel_AlloyInfo_Sheet> newValuesFormat2 = new List <Excel_AlloyInfo_Sheet>();

                foreach (Excel_AlloyInfo_Sheet currentFoglioExcel in CommonMemList.InformazioniFoglioExcelOrigine)
                {
                    // dichiarazione delle possibili stringhe di errore / warnings per il caso corrente per la seconda tipologia in analisi
                    string errorsMessages_Format2  = String.Empty;
                    string warningMessages_Format2 = String.Empty;


                    // recupero del foglio corrente contenuto nel file di riferimento e dal quale continuare la lettura delle informazioni
                    ExcelWorksheet excelSheetReference = _openedExcel.Workbook.Worksheets[currentFoglioExcel.GetPosSheet];

                    // oggetto nel quale inserisco le informazioni recuperate per il foglio corrente
                    Excel_AlloyInfo_Sheet filledInfo;

                    // recupero informazioni per il foglio di formato 2
                    Constants_Excel.EsitoRecuperoInformazioniFoglio esitoRecuperoInformazioniFoglioFormato2Corrente = ExcelReaderInfo.ReadInfoFormat2(excelSheetReference, currentFoglioExcel
                                                                                                                                                      , out filledInfo);


                    if (esitoRecuperoInformazioniFoglioFormato2Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoCorretto ||
                        esitoRecuperoInformazioniFoglioFormato2Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings)
                    {
                        // segnalazione di recupero corretto per le informazioni contenute in questo secondo formato
                        ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioTipoFormato2AvvenutaCorrettamente(excelSheetReference.Name, currentFoglioExcel.GetPosSheet);

                        // segnalazione di eventuale recupero con warnings
                        if (esitoRecuperoInformazioniFoglioFormato2Corrente == Constants_Excel.EsitoRecuperoInformazioniFoglio.RecuperoConWarnings)
                        {
                            ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioFormato2AvvenutaConWarnings(excelSheetReference.Name);
                        }

                        // inserimento del foglio con le informazioni correntemente recuperate all'interno del set attuale
                        newValuesFormat2.Add(filledInfo);
                    }
                    else
                    {
                        // segnalazione di recupero per il foglio corrente con degli errori per i quali non se ne potrà proseguire la successiva analisi
                        ConsoleService.ConsoleExcel.ExcelReaders_Message_LetturaFoglioFormato2AvvenutaConErrori(excelSheetReference.Name, currentFoglioExcel.GetPosSheet);
                    }
                }


                // controllo dopo iterazione su questi fogli
                if (newValuesFormat2.Count() == 0)
                {
                    return(false);
                }

                CommonMemList.InformazioniFoglioExcelOrigine = newValuesFormat2;

                return(true);
            }

            #endregion

            // se esco dalle 2 validazioni disponibili per i diversi fogli senza ancora aver recuperato niente e non aver riconosciuto tipologia foglio lancio una eccezione
            else
            {
                throw new Exception(ExceptionMessages.EXCEL_READERINFO_NESSUNAATTRIBUZIONETIPIRICONOSCIUTAAFOGLI);
            }
        }