/// <summary> /// Abilita le azioni per ogni entità. /// </summary> protected void AbilitaAzioni() { CicloGiorni((oreGiorno, suffissoData, giorno) => { foreach (DataRowView azione in _entitaAzioni) { if (azione["Giorno"] is DBNull || azione["Giorno"].ToString().Contains(suffissoData)) { Range cellaAzione = new Range(_definedNames.GetRowByName(azione["SiglaEntita"]), _definedNames.GetColFromName(azione["SiglaAzione"], suffissoData)); _ws.Range[cellaAzione.ToString()].Interior.Pattern = Excel.XlPattern.xlPatternNone; _ws.Range[cellaAzione.ToString()].Interior.ColorIndex = 2; } } }); }
public void AggiornaColori() { if (Workbook.Mercato != "MSD1") { SplashScreen.UpdateStatus("Aggiorno colori"); DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView; categoriaEntita.RowFilter = "SiglaCategoria = '" + _siglaCategoria + "' AND IdApplicazione = " + Workbook.IdApplicazione; DataView informazioni = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView; foreach (DataRowView entita in categoriaEntita) { informazioni.RowFilter = "SiglaEntita = '" + entita["SiglaEntita"] + "' AND SiglaTipologiaInformazione <> 'CHECK' AND Visibile = '1' AND IdApplicazione = " + Workbook.IdApplicazione; foreach (DataRowView info in informazioni) { object siglaEntita = info["SiglaEntitaRif"] is DBNull ? info["SiglaEntita"] : info["SiglaEntitaRif"]; Range rng = _definedNames.Get(siglaEntita, info["SiglaInformazione"], Date.SuffissoDATA1).Extend(colOffset: Date.GetOreGiorno(Workbook.DataAttiva)); string quarter = Regex.Match(info["SiglaInformazione"].ToString(), @"Q\d").Value; quarter = quarter == "" ? "Q1" : quarter; var rif = (from r in categoriaEntita.Table.AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) select new { SiglaEntita = r["Gerarchia"] is DBNull ? r["SiglaEntita"] : r["Gerarchia"], Riferimento = r["Riferimento"] }).First(); Range rngMercato = new Range(_definedNamesSheetMercato.GetRowByName(rif.SiglaEntita, "UM", "T") + 2, _definedNamesSheetMercato.GetColFromName("RIF" + rif.Riferimento, "PROGRAMMA" + quarter)).Extend(rowOffset: Date.GetOreGiorno(Workbook.DataAttiva)); for (int j = 0; j < rngMercato.Rows.Count; j++) { _ws.Range[rng.Columns[j].ToString()].Interior.ColorIndex = _wsMercato.Range[rngMercato.Rows[j].ToString()].DisplayFormat.Interior.ColorIndex; } } } } }
public static Dictionary <string, int> GetGOTODictionary(string siglaEntita, string siglaInformazione, DefinedNames dn) { Dictionary <string, int> gotoDictionary = new Dictionary <string, int>(); DataView definizioneOfferta = Workbook.Repository[DataBase.TAB.DEFINIZIONE_OFFERTA].DefaultView; definizioneOfferta.RowFilter = "SiglaEntita ='" + siglaEntita + "' AND SiglaInformazione = '" + siglaInformazione + "' AND IdMercato = " + Workbook.Mercato.Substring(2, Workbook.Mercato.Length - 2); if (definizioneOfferta.Count == 0) { return(null); } DataTable entitaInformazione = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE]; foreach (DataRowView offerta in definizioneOfferta) { string desInformazioneCombo = entitaInformazione.AsEnumerable() .Where(r => r["SiglaEntita"].Equals(offerta["SiglaEntita"]) && (r["SiglaEntitaRif"] is DBNull || r["SiglaEntitaRif"].Equals(offerta["SiglaEntitaCombo"])) && r["SiglaInformazione"].Equals(offerta["SiglaInformazioneCombo"])) .Select(r => r["DesInformazione"].ToString()) .FirstOrDefault(); object entitaCalcolo = offerta["SiglaEntitaCalcolo"] is DBNull ? offerta["SiglaEntitaCombo"] : offerta["SiglaEntitaCalcolo"]; object infoCalcolo = offerta["SiglaInformazioneCalcolo"] is DBNull ? offerta["SiglaInformazioneCombo"] : offerta["SiglaInformazioneCalcolo"]; gotoDictionary.Add(desInformazioneCombo, dn.GetRowByName(entitaCalcolo, infoCalcolo)); } return(gotoDictionary); }
public static Range[] GetRangeGiornoGas(DateTime giorno, DataRowView info, DefinedNames definedNames) { int row = definedNames.GetRowByName(info["SiglaEntita"], info["SiglaInformazione"], Date.GetSuffissoData(giorno)); int gasDayStart = TimeZone.CurrentTimeZone.IsDaylightSavingTime(giorno) ? 7 : 6; int remainingHours = 24 - Date.GetOreGiorno(giorno) + gasDayStart; Range rng1 = new Range(row, definedNames.GetColData1H1() + gasDayStart, 1, Date.GetOreGiorno(giorno) - gasDayStart); Range rng2 = new Range(row + 1, definedNames.GetColData1H1(), 1, remainingHours); return(new Range[] { rng1, rng2 }); }
protected override bool EsportaAzioneInformazione(object siglaEntita, object siglaAzione, object desEntita, object desAzione, DateTime dataRif, string[] mercati) { DataView entitaAzione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE].DefaultView; entitaAzione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (entitaAzione.Count == 0) { return(false); } switch (siglaAzione.ToString()) { case "MAIL": //carico i path di export List <UserConfigElement> cfgPaths = new List <UserConfigElement>(); var cfgPath = Workbook.GetUsrConfigElement("pathExportFileFMS"); cfgPaths.Add(cfgPath); cfgPath = Workbook.GetUsrConfigElement("pathExportFileXSD"); cfgPaths.Add(cfgPath); cfgPath = Workbook.GetUsrConfigElement("pathExportFileRS"); cfgPaths.Add(cfgPath); //verifico che siano tutti raggiungibili foreach (var p in cfgPaths) { string path = PreparePath(p); if (!Directory.Exists(path)) { System.Windows.Forms.MessageBox.Show(p.Desc + " '" + path + "' non raggiungibile.", Simboli.NomeApplicazione + " - ERRORE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); return(false); } } Globals.ThisWorkbook.Application.ScreenUpdating = false; var oldActiveWindow = Globals.ThisWorkbook.Application.ActiveWindow; Globals.ThisWorkbook.Worksheets[Workbook.Mercato].Activate(); Range rng = new Range(_defNamesMercato.GetRowByName(siglaEntita, "DATA"), 1, Date.GetOreGiorno(Workbook.DataAttiva) + 5, _defNamesMercato.GetLastCol()); bool result = InviaMail(Workbook.Mercato, siglaEntita, rng); oldActiveWindow.Activate(); Globals.ThisWorkbook.Application.ScreenUpdating = true; return(result); } return(true); }
/// <summary> /// Aggiunge la funzione ottimo per l'entità da ottimizzare. /// </summary> /// <param name="siglaEntita">Entità da ottimizzare.</param> protected virtual void AddOpt(object siglaEntita) { _entitaInformazioni.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaTipologiaInformazione = 'OTTIMO' AND IdApplicazione = " + Workbook.IdApplicazione; if (_entitaInformazioni.Count > 0) { object siglaEntitaInfo = _entitaInformazioni[0]["SiglaEntitaRif"] is DBNull ? _entitaInformazioni[0]["SiglaEntita"] : _entitaInformazioni[0]["SiglaEntitaRif"]; Range rng = new Range(_definedNames.GetRowByName(siglaEntitaInfo, _entitaInformazioni[0]["SiglaInformazione"]), _definedNames.GetFirstCol()); try { Workbook.WB.Names.Item("WBMAX").Delete(); } catch { } double width = Workbook.Sheets[_sheet].Range[rng.ToString()].ColumnWidth; Workbook.Application.Run("wbBest", "'" + _sheet + "'!" + rng.ToString(), "Maximize"); Workbook.Sheets[_sheet].Range[rng.ToString()].ColumnWidth = width; } }
private void RipristinaValoriDaRepositori() { DataTable dt = Workbook.Repository[tableName : ALL_OLD_VALUE]; DataTable dtm = Workbook.Repository[tableName : MODIFICA]; DataRow[] drs; Sheet.Protected = false; foreach (DataRow dr in dt.Rows) { string data = dr["Data"].ToString(); string suffData = Date.GetSuffissoData(new DateTime(int.Parse(data.Substring(0, 4)), int.Parse(data.Substring(4, 2)), int.Parse(data.Substring(6, 2)))); string suffOra = Date.GetSuffissoOra(int.Parse(data.Substring(8, 2))); int col = _definedNames.GetColFromDate(suffData, suffOra); int row = _definedNames.GetRowByName(dr["SiglaEntita"].ToString() + Simboli.UNION[0] + dr["SiglaInformazione"].ToString()); _ws.Cells[row, col].Value2 = dr["Valore"].ToString() == "0" ? "" : dr["Valore"]; _ws.Cells[row, col].ClearComments(); if (!dr["Commento"].Equals("")) { _ws.Cells[row, col].AddComment(dr["Commento"]); } drs = dtm.Select("SiglaEntita = '" + dr["SiglaEntita"].ToString() + "' AND SiglaInformazione = '" + dr["SiglaInformazione"].ToString() + "' AND Data = '" + dr["Data"].ToString() + "'"); if (drs.Count() > 0) { dtm.Rows.Remove(drs.FirstOrDefault()); } } Sheet.Protected = true; dt.Clear(); }
protected override void ScriviCella(Excel.Worksheet ws, DefinedNames definedNames, object siglaEntita, DataRowView info, string suffissoData, string suffissoOra, object risultato, bool saveToDB, bool fromCarica) { base.ScriviCella(ws, definedNames, siglaEntita, info, suffissoData, suffissoOra, risultato, saveToDB, fromCarica); //se l'informazione è visibile la devo scrivere anche nei fogli dei mercati DataView informazioni = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE]); informazioni.RowFilter = "SiglaEntita = '" + siglaEntita + "' OR SiglaEntitaRif = '" + siglaEntita + "' AND SiglaInformazione = '" + info["SiglaInformazione"] + "' AND IdApplicazione = " + Workbook.IdApplicazione; bool visible = false; foreach (DataRowView r in informazioni) { if (r["Visibile"].Equals("1")) { visible = true; } } if (visible) { DataTable entita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA]; var rif = (from r in entita.AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) select new { SiglaEntita = r["Gerarchia"] is DBNull ? r["SiglaEntita"] : r["Gerarchia"], Riferimento = r["Riferimento"] }).First(); string quarter = Regex.Match(info["SiglaInformazione"].ToString(), @"Q\d").Value; quarter = quarter == "" ? "Q1" : quarter; Range rngMercato = new Range(_definedNamesSheetMercato.GetRowByName(rif.SiglaEntita, "UM", "T") + 2, _definedNamesSheetMercato.GetColFromName("RIF" + rif.Riferimento, "PROGRAMMA" + quarter)); rngMercato.StartRow += (Date.GetOraFromSuffissoOra(suffissoOra) - 1); _wsMercato.Range[rngMercato.ToString()].Value = risultato; } }
public override void Range(object Sh, Excel.Range Target) { if (Workbook.CategorySheets.Contains(Target.Worksheet)) { //Se la funzione scrive in altre celle, ricordarsi di disabilitare gli handler per la modifica delle celle //Workbook.WB.SheetChange -= Handler.StoreEdit; Workbook.RemoveStdStoreEdit(); Workbook.WB.SheetChange -= this.Range; Excel.Worksheet ws = Target.Worksheet; Excel.Worksheet wsMercato = Workbook.Sheets[Workbook.Mercato]; bool wasProtected = wsMercato.ProtectContents; if (wasProtected) { wsMercato.Unprotect(Workbook.Password); ws.Unprotect(Workbook.Password); } DefinedNames definedNames = new DefinedNames(ws.Name); DefinedNames definedNamesMercato = new DefinedNames(Workbook.Mercato); DataTable entita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA]; string[] ranges = Target.Address.Split(','); foreach (string range in ranges) { Range rng = new Range(range); foreach (Range cell in rng.Cells) { string[] parts = definedNames.GetNameByAddress(cell.StartRow, cell.StartColumn).Split(Simboli.UNION[0]); string siglaEntita = parts[0]; string siglaInformazione = parts[1]; string suffissoData = parts[2]; string suffissoOra = parts[3]; var rif = (from r in entita.AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) select new { SiglaEntita = r["Gerarchia"] is DBNull ? r["SiglaEntita"] : r["Gerarchia"], Riferimento = r["Riferimento"] }).First(); string quarter = Regex.Match(siglaInformazione, @"Q\d").Value; quarter = quarter == "" ? "Q1" : quarter; Range rngMercato = new Range(definedNamesMercato.GetRowByName(rif.SiglaEntita, "UM", "T") + 2, definedNamesMercato.GetColFromName("RIF" + rif.Riferimento, "PROGRAMMA" + quarter)); rngMercato.StartRow += (Date.GetOraFromSuffissoOra(suffissoOra) - 1); wsMercato.Range[rngMercato.ToString()].Value = ws.Range[cell.ToString()].Value; ws.Range[cell.ToString()].Interior.ColorIndex = wsMercato.Range[rngMercato.ToString()].DisplayFormat.Interior.ColorIndex; } } if (wasProtected) { wsMercato.Protect(Workbook.Password); ws.Protect(Workbook.Password); } //Se la funzione scrive in altre celle, ricordarsi di riabilitare gli handler per la modifica delle celle //Workbook.WB.SheetChange += Handler.StoreEdit; Workbook.AddStdStoreEdit(); Workbook.WB.SheetChange += this.Range; } }
private void btnApplica_Click(object sender, EventArgs e) { Workbook.ScreenUpdating = false; Sheet.Protected = false; btnApplica.Enabled = false; btnAnnulla.Enabled = false; btnMeteo.Enabled = false; if (_toProcessDates.Count == 0) { MessageBox.Show("Non è stata selezionata alcuna data...", Simboli.NomeApplicazione, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (treeViewUP.Nodes.OfType <TreeNode>().Where(n => n.Checked).ToArray().Length == 0) { MessageBox.Show("Non è stata selezionata alcuna unità...", Simboli.NomeApplicazione, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { SplashScreen.Show(); Workbook.Application.EnableEvents = false; Workbook.ScreenUpdating = false; Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual; bool caricaOrGenera = false; bool loaded = false; bool g_mp_mgp = false; DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView; ThroughAllNodes(treeViewAzioni.Nodes, nodoAzione => { if (loaded && Regex.Match(nodoAzione.Name, @"\w[^\d]+").Value == "GENERA") { Workbook.Application.CalculateFull(); Workbook.ScreenUpdating = false; loaded = false; } if (nodoAzione.Checked && nodoAzione.Nodes.Count == 0) { TreeNode[] nodiEntita = treeViewUP.Nodes.OfType <TreeNode>().Where(node => node.Checked).ToArray(); _azioni.RowFilter = "SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (!g_mp_mgp) { g_mp_mgp = nodoAzione.Name == "G_MP_MGP"; } ThroughAllNodes(treeViewUP.Nodes, nodoEntita => { foreach (DateTime date in _toProcessDates) { string suffissoData = Date.GetSuffissoData(date); if (nodoEntita.Checked && nodoEntita.Nodes.Count == 0) { entitaProprieta.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione; int intervalloGiorni = Struct.intervalloGiorni; if (entitaProprieta.Count > 0) { intervalloGiorni = int.Parse("" + entitaProprieta[0]["Valore"]); } if (date <= Workbook.DataAttiva.AddDays(intervalloGiorni)) { string nomeFoglio = DefinedNames.GetSheetName(nodoEntita.Name); bool presente; DataView entitaAzione = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_AZIONE]); entitaAzione.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (entitaAzione.Count > 0 && (entitaAzione[0]["Giorno"] is DBNull || entitaAzione[0]["Giorno"].ToString().Contains(Date.GetSuffissoData(date)))) { SplashScreen.UpdateStatus("[" + date.ToShortDateString() + "] " + nodoAzione.Parent.Text + " " + nodoAzione.Text + ": " + nodoEntita.Text); //string[] mercati = null; string[] mercati = null; if (Workbook.Repository.Applicazione["ModificaDinamica"].Equals("1")) { mercati = groupMercati.Controls .OfType <CheckBox>() .Where(c => c.Checked) .Select(c => Regex.Match(c.Text, @"\d+").Value) .OrderBy(s => s) .ToArray(); } else if (Workbook.IdApplicazione == 18) { mercati = new string[] { Regex.Match(Workbook.Mercato, @"\d+").Value }; } switch (Regex.Match(nodoAzione.Parent.Name, @"\w[^\d]+").Value) { case "CARICA": presente = _carica.AzioneInformazione(nodoEntita.Name, nodoAzione.Name, nodoAzione.Parent.Name, date, mercati); _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date); caricaOrGenera = true; loaded = true; break; case "GENERA": presente = _carica.AzioneInformazione(nodoEntita.Name, nodoAzione.Name, nodoAzione.Parent.Name, date, mercati); _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date); caricaOrGenera = true; break; case "ESPORTA": presente = _esporta.RunExport(nodoEntita.Name, nodoAzione.Name, nodoEntita.Text, nodoAzione.Text, date, mercati); if (presente) { _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date); } break; } if (_azioni[0]["Relazione"] != DBNull.Value && Struct.visualizzaRiepilogo) { string[] azioneRelazione = _azioni[0]["Relazione"].ToString().Split(';'); DefinedNames definedNames = new DefinedNames("Main"); foreach (string relazione in azioneRelazione) { _azioni.RowFilter = "SiglaAzione = '" + relazione + "' AND IdApplicazione = " + Workbook.IdApplicazione; Range rng = new Range(definedNames.GetRowByName(nodoEntita.Name), definedNames.GetColFromName(relazione, suffissoData)); if (Workbook.Main.Range[rng.ToString()].Interior.ColorIndex != 2) { Workbook.Main.Range[rng.ToString()].Value = "RI" + _azioni[0]["Gerarchia"]; Style.RangeStyle(Workbook.Main.Range[rng.ToString()], fontSize: 8, bold: true, foreColor: 3, backColor: 6, align: Excel.XlHAlign.xlHAlignCenter); } } _azioni.RowFilter = "SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; } } } } } }); switch (Regex.Match(nodoAzione.Parent.Name, @"\w[^\d]+").Value) { case "CARICA": Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogCarica, "Carica: " + nodoAzione.Text); break; case "GENERA": Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogGenera, "Genera: " + nodoAzione.Text); break; case "ESPORTA": Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogEsporta, "Esporta: " + nodoAzione.Text); break; } } }); Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic; if (caricaOrGenera) { SplashScreen.UpdateStatus("Salvo su DB"); Sheet.SalvaModifiche(); DataBase.SalvaModificheDB(); if (Workbook.IdApplicazione == 5 && g_mp_mgp) { SplashScreen.UpdateStatus("Aggiorno rendimenti"); Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual; ThroughAllNodes(treeViewUP.Nodes, nodoEntita => { if (nodoEntita.Checked && nodoEntita.Nodes.Count == 0) { _categoriaEntita.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione; if (_categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T")) { foreach (DateTime date in _toProcessDates) { _carica.AzioneInformazione(nodoEntita.Name, "RENDIMENTO", "CARICA", date, null); } } } }); Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic; SplashScreen.UpdateStatus("Salvo su DB"); Sheet.SalvaModifiche(); DataBase.SalvaModificheDB(); } } Workbook.Application.EnableEvents = true; Workbook.ScreenUpdating = true; SplashScreen.Close(); } btnApplica.Enabled = true; btnAnnulla.Enabled = true; btnMeteo.Enabled = true; Sheet.Protected = true; Workbook.ScreenUpdating = true; }
/// <summary> /// Formatta il blocco entità. /// </summary> /// <param name="siglaEntita">Sigla entità.</param> /// <param name="desEntita">Descrizione.</param> /// <param name="codiceRUP">Codice RUP.</param> protected void FormattaBloccoEntita(object siglaEntita, object desEntita, object codiceRUP) { Range rngMercatoPrec = new Range(); //Titolo Range rng = new Range(_definedNames.GetRowByName(siglaEntita, "T"), _struttura.colBlock, 1, 10); Style.RangeStyle(_ws.Range[rng.ToString()], fontSize: 12, merge: true, bold: true, align: Excel.XlHAlign.xlHAlignCenter, borders: "[top:medium,right:medium,bottom:medium,left:medium]"); _ws.Range[rng.ToString()].Value = "PROGRAMMA A 15 MINUTI " + desEntita; _ws.Range[rng.ToString()].RowHeight = 25; //Data rng = new Range(_definedNames.GetRowByName(siglaEntita, "DATA"), _struttura.colBlock, 1, 5); Style.RangeStyle(_ws.Range[rng.ToString()], fontSize: 10, bold: true, align: Excel.XlHAlign.xlHAlignCenter, borders: "[top:medium,right:medium,bottom:medium,left:medium,insidev:medium]", numberFormat: "dd/MM/yyyy"); _ws.Range[rng.ToString()].RowHeight = 18; _ws.Range[rng.Columns[0].ToString()].Value = "Data"; _ws.Range[rng.Columns[1, 3].ToString()].Merge(); _ws.Range[rng.Columns[1].ToString()].Value = Workbook.DataAttiva; _ws.Range[rng.Columns[4].ToString()].Value = _mercato; //Tabella DataTable categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA]; DataView informazioni = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView; List <DataRow> entitaRif = (from r in categoriaEntita.AsEnumerable() where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["Gerarchia"].Equals(siglaEntita) select r).ToList(); bool hasEntitaRif = entitaRif.Count > 0; int numEntita = Math.Max(entitaRif.Count, 1); rng = new Range(_definedNames.GetRowByName(siglaEntita, "UM", "T"), _struttura.colBlock, 1, 5 * numEntita); for (int i = 0; i < numEntita; i++) { informazioni.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND Visibile = '1' " + (hasEntitaRif ? "AND SiglaEntitaRif = '" + entitaRif[i]["SiglaEntita"] + "'" : "") + " AND IdApplicazione = " + _appID; //range grande come tutta la tabella rng = new Range(_definedNames.GetRowByName(siglaEntita, "UM", "T"), _definedNames.GetColFromName("RIF" + (i + 1), "PROGRAMMAQ1") - 1, Date.GetOreGiorno(Workbook.DataAttiva) + 2, 5); Style.RangeStyle(_ws.Range[rng.ToString()], borders: "[top:medium,right:medium,bottom:medium,left:medium,insideH:thin,insideV:thin]", align: Excel.XlHAlign.xlHAlignCenter, numberFormat: "general"); Style.RangeStyle(_ws.Range[rng.Rows[1, rng.Rows.Count - 1].Columns[0].ToString()], backColor: 15, bold: true, align: Excel.XlHAlign.xlHAlignLeft); Style.RangeStyle(_ws.Range[rng.Rows[0].ToString()], backColor: 15, bold: true, fontSize: 11); Style.RangeStyle(_ws.Range[rng.Rows[1].ToString()], backColor: 15, bold: true); _ws.Range[rng.Rows[0].Columns[1, rng.Columns.Count - 1].ToString()].Merge(); if (hasEntitaRif) { _ws.Range[rng.Rows[0].ToString()].Value = new object[] { "UM", entitaRif[i]["CodiceRUP"] is DBNull ? entitaRif[i]["DesEntita"] : entitaRif[i]["CodiceRUP"] } } ; else { _ws.Range[rng.Rows[0].ToString()].Value = new object[] { "UM", codiceRUP is DBNull ? desEntita : codiceRUP } }; for (int h = 1; h <= Date.GetOreGiorno(Workbook.DataAttiva); h++) { _ws.Range[rng.Columns[0].Rows[h + 1].ToString()].Value = "Ora " + h; } var isOrario = informazioni .OfType <DataRowView>() .Any(r => r["SiglaInformazione"].ToString().StartsWith("PROGRAMMA_")); if (!isOrario) { for (int j = 0; j < 4; j++) { _ws.Range[rng.Rows[1].Columns[j + 1].ToString()].Value = 15 * j + "-" + 15 * (j + 1); } } else { _ws.Range[rng.Cells[1, 1].ToString()].Value = "0-60"; } //TODO controllare che non ci siano problemi if (_mercato != "MSD1") { string mercatoPrec = Simboli.GetMercatoPrec(_mercato); //calcolo il range nel foglio del mercato precedente (non è detto che siano nella stessa posizione (anche se non ha senso che non lo siano...)) rngMercatoPrec = new Range(_definedNamesMercatoPrec.GetRowByName(siglaEntita, "UM", "T"), _definedNamesMercatoPrec.GetColFromName("RIF" + (i + 1), "PROGRAMMAQ1") - 1, Date.GetOreGiorno(Workbook.DataAttiva) + 2, 5); Excel.FormatCondition condGreater = _ws.Range[rng.Rows[2, rng.Rows.Count - 1].Columns[1, 4].ToString()].FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: "=" + rng.Cells[2, 1] + " > '" + mercatoPrec + "'!" + rngMercatoPrec.Cells[2, 1]); condGreater.Interior.ColorIndex = Struct.COLORE_VARIAZIONE_POSITIVA; Excel.FormatCondition condLess = _ws.Range[rng.Rows[2, rng.Rows.Count - 1].Columns[1, 4].ToString()].FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: "=" + rng.Cells[2, 1] + " < '" + mercatoPrec + "'!" + rngMercatoPrec.Cells[2, 1]); condLess.Interior.ColorIndex = Struct.COLORE_VARIAZIONE_NEGATIVA; } } }