public SheetExport(Excel.Worksheet ws) { _ws = ws; _mercato = ws.Name; _appID = Workbook.Repository[DataBase.TAB.MERCATI].AsEnumerable() .Where(r => r["DesMercato"].Equals(_mercato)) .Select(r => (int)r["IdApplicazioneMercato"]) .FirstOrDefault(); AggiornaParametriSheet(); _definedNames = new DefinedNames(_mercato); if (_mercato != "MSD1") { _definedNamesMercatoPrec = new DefinedNames(Simboli.GetMercatoPrec(_mercato)); } }
public override void SetMercatoAttivo() { Workbook.Mercato = Simboli.GetActiveMarket(DateTime.Now.Hour); }
private void ChangeSelectionToIncrement(Excel.Range Target) { // Descrizione Combo / Riga Calcolo //offerta_dictionary = new Dictionary<string, int>(); // SiglaInformazione riga selezionata / SiglaInformazione riga calcolo //calcolo_dictionary = new Dictionary<string, string>(); _gotoDictionary = new Dictionary <string, int>(); btnApplica.Enabled = false; comboBox_VaiA.DataSource = null; comboBox_applicaA.DataSource = null; groupQuantità.Visible = false; groupPrezzo.Visible = false; lbErrore.Text = ""; lbErrore.ForeColor = Color.Red; btnApplica.Enabled = false; _selectionIsCorrect = false; if (Target.Rows.Count > 1) { foreach (Excel.Range row in Target.Rows) { if (row.EntireRow.Hidden) { lbErrore.Text = "ERRORE: Nel range selezionato ci sono righe nascoste."; return; } } lbErrore.ForeColor = Color.DarkOrange; lbErrore.Text = "ATTENZIONE: Nel range selezionato ci sono più righe."; } foreach (Excel.Range row in Target.Rows) { if (!_definedNames.IsEditable(row.Row)) { lbErrore.Text = "ERRORE: Il range selezionato contiene delle righe non modificabili."; return; } } int firstCol = _definedNames.GetFirstCol(); if (Target.Column < firstCol + Simboli.GetMarketOffsetMI(Workbook.Mercato, Workbook.DataAttiva)) { lbErrore.Text = "ERRORE: Il range selezionato contiene celle appartenenti a mercati chiusi."; return; } /* Controllo se la riga selezionata è corretta per l'operazione richiesta */ string name_col_row_selected = _definedNames.GetNameByRow(Target.Row).FirstOrDefault(); string siglaEntita = name_col_row_selected.Split('.').First(); string siglaInformazione = name_col_row_selected.Split('.').Last(); is_price = is_Name_Match_Price(name_col_row_selected); is_quantity = is_Name_Match_Quantity(name_col_row_selected); //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) //{ // lbErrore.Text = "ERRORE: Non ci sono opzioni attive per questa funzione."; // return; //} //DataView informazioni = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView; //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, _definedNames.GetRowByName(entitaCalcolo, infoCalcolo)); //} _gotoDictionary = OfferteMIHelper.GetGOTODictionary(siglaEntita, siglaInformazione, _definedNames); if (_gotoDictionary == null) { lbErrore.Text = "ERRORE: Non ci sono opzioni attive per questa funzione."; return; } if (is_price) { groupQuantità.Visible = false; groupPrezzo.Visible = true; comboBox_applicaA.DataSource = new BindingSource(_gotoDictionary, null); comboBox_applicaA.ValueMember = "Value"; comboBox_applicaA.DisplayMember = "Key"; comboBox_applicaA.SelectedIndex = -1; } else if (is_quantity) { groupQuantità.Visible = true; groupPrezzo.Visible = false; comboBox_VaiA.DataSource = new BindingSource(_gotoDictionary, null); comboBox_VaiA.ValueMember = "Value"; comboBox_VaiA.DisplayMember = "Key"; comboBox_VaiA.SelectedIndex = -1; } else { lbErrore.Text = "ERRORE: Il range selezionato non si riferisce a quantità o prezzi."; return; } _selectionIsCorrect = true; if (_valuesAreCorrect) { btnApplica.Enabled = true; } btnRipristina.Enabled = false; _origRng = Target; Handler.SaveOriginValues(Target, tableName: ALL_OLD_VALUE); if (is_price) { Excel.Range rng = _ws.Range[_ws.Cells[Target.Row - 2, Target.Column], _ws.Cells[Target.Row - 2, Target.Column + Target.Columns.Count - 1]]; Handler.SaveOriginValues(rng, tableName: ALL_OLD_VALUE); } if (is_quantity) { Excel.Range rng = _ws.Range[_ws.Cells[Target.Row - 1, Target.Column], _ws.Cells[Target.Row - 1, Target.Column + Target.Columns.Count - 1]]; Handler.SaveOriginValues(rng, tableName: ALL_OLD_VALUE); } }
private void ChangeSelectionToIncrement(Excel.Range Target) { lbErrore.Text = ""; lbErrore.ForeColor = Color.Red; btnApplica.Enabled = false; _selectionIsCorrect = false; if (Target.Rows.Count > 1) { foreach (Excel.Range row in Target.Rows) { if (row.EntireRow.Hidden) { lbErrore.Text = "ERRORE: Nel range selezionato ci sono righe nascoste."; return; } } lbErrore.ForeColor = Color.DarkOrange; lbErrore.Text = "ATTENZIONE: Nel range selezionato ci sono più righe."; } foreach (Excel.Range row in Target.Rows) { if (!_definedNames.IsEditable(row.Row)) { lbErrore.Text = "ERRORE: Il range selezionato contiene delle righe non modificabili."; return; } } int marketOffset = Workbook.Repository.Applicazione["ModificaDinamica"].Equals("1") ? Simboli.GetMarketOffset(DateTime.Now.Hour) : 0; int firstCol = _definedNames.GetColFromDate(Date.SuffissoDATA1); if (Target.Column < firstCol + marketOffset) { lbErrore.Text = "ERRORE: Il range selezionato contiene celle appartenenti a mercati chiusi."; return; } _selectionIsCorrect = true; if (_valuesAreCorrect) { btnApplica.Enabled = true; } btnRipristina.Enabled = false; if (Target.Cells.Count == 1) { _origVal = new object[1, 1]; _origVal[0, 0] = Target.Value; } else { _origVal = Target.Value; } _origRng = Target; }
/// <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; } } }