/// <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); }
/// <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); }
/// <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); } }