コード例 #1
0
        /// <summary>
        /// Formatta il range che conterrà tutti i dati del riepilogo. Le celle sono tutte disabilitate e verranno abilitate nella funzione AbilitaAzioni.
        /// </summary>
        protected void FormattaAllDati()
        {
            Range rngAll  = new Range(_definedNames.GetFirstRow(), _definedNames.GetFirstCol() + 1, _definedNames.GetRowOffset(), _definedNames.GetColOffsetRiepilogo() - 1);
            Range rngData = new Range(_definedNames.GetFirstRow() + 3, _definedNames.GetFirstCol(), _definedNames.GetRowOffset() - 3, _definedNames.GetColOffsetRiepilogo());

            _ws.Range[rngData.ToString()].Style            = "Area dati riepilogo";
            _ws.Range[rngData.Columns[0].ToString()].Style = "Lista entita riepilogo";
            _ws.Range[rngData.Columns[0].ToString()].BorderAround2(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlMedium);

            Excel.Range xlrng = _ws.Range[rngAll.Rows[1, rngAll.Rows.Count - 1].ToString()];
            //trovo tutte le aree unite e creo il blocco col bordo grosso
            int i       = 0;
            int colspan = 0;

            while (i < xlrng.Columns.Count)
            {
                colspan = xlrng.Cells[1, i + 1].MergeArea().Columns.Count;
                _ws.Range[rngAll.Columns[i, i + colspan - 1].ToString()].BorderAround2(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlMedium);
                _ws.Range[rngAll.Columns[i, i + colspan - 1].ToString()].Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
                i += colspan;
            }


            _ws.Range[rngAll.ToString()].EntireColumn.AutoFit();
            if (rngAll.ColOffset > 1)
            {
                //calcolo la massima dimensione delle colonne e la riapplico a tutto il riepilogo
                double maxWidth = double.MinValue;
                foreach (Range col in rngAll.Columns)
                {
                    maxWidth = Math.Max(_ws.Range[col.ToString()].ColumnWidth, maxWidth);
                }

                foreach (Range col in rngAll.Columns)
                {
                    _ws.Range[col.ToString()].ColumnWidth = maxWidth + 1;
                }
            }
        }
コード例 #2
0
ファイル: Esporta.cs プロジェクト: fberga/Iren
        protected bool InviaMail(DefinedNames definedNames, object siglaEntita)
        {
            string fileNameFull = "";
            string fileName     = "";

            try
            {
                fileName     = @"PrevisioneGAS_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
                fileNameFull = Environment.ExpandEnvironmentVariables(@"%TEMP%\" + fileName);

                Excel.Workbook wb = Globals.ThisWorkbook.Application.Workbooks.Add();

                Workbook.Main.Range[Range.GetRange(definedNames.GetFirstRow(), definedNames.GetFirstCol(), definedNames.GetRowOffset(), definedNames.GetColOffsetRiepilogo()).ToString()].Copy();
                wb.Sheets[1].Range["B2"].PasteSpecial();

                wb.Sheets[1].UsedRange.ColumnWidth = 17;
                wb.Sheets[1].Range["A1"].Select();
                wb.SaveAs(fileNameFull, Excel.XlFileFormat.xlExcel8);
                wb.Close();
                Marshal.ReleaseComObject(wb);

                var    config = Workbook.GetUsrConfigElement("destMailTest");
                string mailTo = config.Test;
                string mailCC = "";

                DataView entitaProprieta = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA]);

                if (Workbook.Ambiente == Simboli.PROD)
                {
                    entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'PREV_CONSUMO_GAS_MAIL_TO' AND IdApplicazione = " + Workbook.IdApplicazione;

                    if (entitaProprieta.Count > 0)
                    {
                        mailTo = entitaProprieta[0]["Valore"].ToString();
                    }

                    entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'PREV_CONSUMO_GAS_MAIL_CC' AND IdApplicazione = " + Workbook.IdApplicazione;

                    if (entitaProprieta.Count > 0)
                    {
                        mailCC = entitaProprieta[0]["Valore"].ToString();
                    }
                }
                if (DataBase.OpenConnection())
                {
                    Outlook.Application outlook = GetOutlookInstance();
                    Outlook._MailItem   mail    = outlook.CreateItem(Outlook.OlItemType.olMailItem);

                    config = Workbook.GetUsrConfigElement("oggettoMail");
                    string oggetto = config.Value.Replace("%DATA%", DateTime.Now.ToString("dd-MM-yyyy")).Replace("%ORA%", DateTime.Now.ToString("HH:mm"));
                    config = Workbook.GetUsrConfigElement("messaggioMail");
                    string messaggio = config.Value.Replace("%NOMEUTENTE%", Workbook.NomeUtente);
                    messaggio = Regex.Replace(messaggio, @"^[^\S\r\n]+", "", RegexOptions.Multiline);


                    ////TODO check se manda sempre con lo stesso account...
                    Outlook.Account senderAccount = outlook.Session.Accounts[1];
                    foreach (Outlook.Account account in outlook.Session.Accounts)
                    {
                        if (account.DisplayName == "Bidding")
                        {
                            senderAccount = account;
                        }
                    }
                    mail.SendUsingAccount = senderAccount;
                    mail.Subject          = oggetto;
                    mail.Body             = messaggio;
                    foreach (string dest in mailTo.Split(';'))
                    {
                        if (dest.Trim() != "")
                        {
                            mail.Recipients.Add(dest.Trim());
                        }
                    }
                    mail.CC = mailCC;
                    mail.Attachments.Add(fileNameFull);

                    mail.Send();

                    File.Delete(fileNameFull);
                }
                else
                {
                    string emailFolder = @"C:\Emergenza\Email\" + Simboli.NomeApplicazione;

                    if (!Directory.Exists(emailFolder))
                    {
                        Directory.CreateDirectory(emailFolder);
                    }

                    File.Move(fileNameFull, Path.Combine(emailFolder, fileName));
                }
            }
            catch (Exception e)
            {
                Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogErrore, "PrevisioneGAS.Esporta.InvioMail: " + e.Message);

                System.Windows.Forms.MessageBox.Show(e.Message, Simboli.NomeApplicazione + " - ERRORE!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }

                return(false);
            }

            return(true);
        }