none
SQL'den Excel Dosyası oluşturmak (Outlook Mail Eki Olarak) RRS feed

  • Genel Tartışma

  • Merhaba 

    SQLde bulunan 2 farklı tablodan sorgulama yaparak excel dosyası oluşturmak istiyorum. Bu dosyanın outlook maik eki olrak getirmek istiyorum..

    Outlook maili oluşturabildiğim sorgum:

    private void linkLabel10_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
    
                int sayı = 0;
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                     if (row.Cells[2].Value.ToString() == "Katıldı")
                    {
    
                        sayı = sayı + 1;
                       
                        
                    }
                }
    
                Outlook.Application oApp = new Outlook.Application();
                Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    
                oMailItem.To = "yunuso@nebim.com.tr";
                oMailItem.HTMLBody = String.Format(@"  <html><body> Merhaba , <BR/><BR/> <b>"+ comboBox2.Text.Substring(comboBox2.Text.IndexOf("(")+1,10) +" </b> Tarihinde düzenlenen <b>"+ comboBox2.Text.Substring(0,comboBox2.Text.IndexOf("(") - 1) + "</b> tarafından verilen <b>" + comboBox1.Text.Substring(0, comboBox1.Text.IndexOf("*") - 1) + "</b>'ne <b>" + sayı.ToString() + "</b> Kişi katılmıştır. Eğitime başvuru, katılım durumunu ve katılımcılar tarafından yapılan değerlendirmeler ekte bulunmaktadır. Eğitimin hakkında ortalama değerlendirmeler ise aşağıda bulunmaktadır.");
                oMailItem.HTMLBody += String.Format(@" <p>Ankete toplamda <b>X</b> kişi katıldı.</p>");
    
                oMailItem.HTMLBody += String.Format(@" <b>" + comboBox1.Text.Substring(0, comboBox1.Text.IndexOf("*") - 1) + "</b> için; <BR/><BR/>");
                oMailItem.HTMLBody += String.Format(@" <b>Eğitim Süresi Yeterli miydi?</b> Sorusunun ortalaması 5 üzerinden;<BR/>");
                oMailItem.HTMLBody += String.Format(@" <b>Eğitmen Konuya Hakim miydi?</b> Sorusunun ortalaması 5 üzerinden;<BR/> ");
                oMailItem.HTMLBody += String.Format(@" <b>Sorularınıza Yanıt Alabildiniz mi?</b> Sorusunun ortalaması 5 üzerinden;<BR/>");
                oMailItem.HTMLBody += String.Format(@" <b>Eğitim Yerinden Memnun musunuz?</b> Sorusunun ortalaması 5 üzerinden;<BR/><BR/> ");
    
                oMailItem.HTMLBody += String.Format(@"</ BODY ></ HTML > ");
    
    
                 oMailItem.Display(true);
            }
    

    14 Ocak 2018 Pazar 19:22

Tüm Yanıtlar

  • Merhaba,

    SQL'den excel'e verileri aktarmayı deniyorum ama boş geliyor.

               using (var fbd = new FolderBrowserDialog())
                {
                    DialogResult result = fbd.ShowDialog();
    
                    if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
                    {
                        string fileTest = fbd.SelectedPath.ToString() + "\\"+ comboBox1.Text.Substring(0, comboBox1.Text.IndexOf("*") - 1) +"-"+ comboBox2.Text.Substring(0, comboBox2.Text.IndexOf("(") - 1) +"-"+ comboBox2.Text.Substring(comboBox2.Text.IndexOf("(") + 1, 10) + ".xlsx";
                        MessageBox.Show(fileTest);
                        if (File.Exists(fileTest))
                        {
                            File.Delete(fileTest);
                        }
    
                        SqlDataAdapter da = new SqlDataAdapter("select PersonelKodu= ztSinifEgitimiDurum.KisiID, İsim= dbo.cdCurrAcc.FullName, Katılım = CASE WHEN Katilim = 1 THEN 'Katıldı' ELSE 'Katılmadı' END, ztSinifEgitimiDurum.ID FROM dbo.ztSinifEgitimiDurum INNER JOIN dbo.cdCurrAcc ON cdCurrAcc.CurrAccCode = ztSinifEgitimiDurum.KisiID AND cdCurrAcc.CurrAccTypeCode = ztSinifEgitimiDurum.KisiTipiID WHERE AtamaID =" + AtamaIDBul(), baglan);
                        DataSet ds = new DataSet();
    
                        Excel.Application Excel;
                        Excel.Worksheet excelWorkSheet;
                        Excel.Workbook excelWorkBook;
    
                        Excel = new Excel.Application();
                        excelWorkBook = Excel.Workbooks.Add();
                        excelWorkSheet = (Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1);
                        excelWorkSheet.Cells[1, 1] = "some value";
                        excelWorkSheet.Name = "Ali";
    
                        foreach (DataTable table in ds.Tables)
                            {
                                for (int i = 1; i < table.Columns.Count + 1; i++)
                                {
                                    excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
                                MessageBox.Show(table.Columns[i - 1].ColumnName.ToString());
                                }
    
                                for (int j = 0; j < table.Rows.Count; j++)
                                {
                                    for (int k = 0; k < table.Columns.Count; k++)
                                    {
                                        excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
                                    }
                                }
                            }
    
                        //                   excelWorkSheet.Cells[1, 1] = "some value";
    
                        excelWorkBook.SaveAs(fileTest);
                        excelWorkBook.Close();
                        Excel.Quit();
                        
                    }

    15 Ocak 2018 Pazartesi 10:35
  • Merhaba İstediğimi gerçekleştirebileceğim bir adıma getirdim. Excel Iterop sınıfı ile aynı excelde 2.ci bir sayfa oluşturabilirmiyim ?

            private void linkLabel10_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
    
                using (var fbd = new FolderBrowserDialog())
                {
                    DialogResult result = fbd.ShowDialog();
    
                    if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
                    {
                        string fileTest = fbd.SelectedPath.ToString() + "\\"+ comboBox1.Text.Substring(0, comboBox1.Text.IndexOf("*") - 1) +"-"+ comboBox2.Text.Substring(0, comboBox2.Text.IndexOf("(") - 1) +"-"+ comboBox2.Text.Substring(comboBox2.Text.IndexOf("(") + 1, 10) + ".xlsx";
                        if (File.Exists(fileTest))
                        {
                            File.Delete(fileTest);
                        }
    
                        SqlDataAdapter da = new SqlDataAdapter("SELECT [Kişi Adı]=FullName, Firma = ISNULL((SELECT WorkplaceDescription FROM cdWorkplaceDesc WITH(NOLOCK) WHERE cdWorkplaceDesc.WorkplaceCode = EmployeeWorkPlace.WorkplaceCode AND cdWorkplaceDesc.CompanyCode = EmployeeWorkPlace.CompanyCode AND cdWorkplaceDesc.LangCode = 'TR'), SPACE(0) ), Mail = (SELECT TOP 1 CommAddress FROM prCurrAccCommunication WHERE prCurrAccCommunication.CurrAccCode = dbo.cdCurrAcc.CurrAccCode AND prCurrAccCommunication.CommunicationTypeCode = 3 ), Katılım = CASE WHEN Katilim = 1 THEN 'Katıldı' ELSE 'Katılmadı' END FROM cdCurrAcc WITH(NOLOCK) LEFT OUTER JOIN dbo.prCurrAccCommunication ON prCurrAccCommunication.CurrAccTypeCode = cdCurrAcc.CurrAccTypeCode AND prCurrAccCommunication.CurrAccCode = cdCurrAcc.CurrAccCode LEFT OUTER JOIN(SELECT *, SortOrder = ROW_NUMBER() OVER(PARTITION BY CompanyCode, CurrAccTypeCode, CurrAccCode ORDER BY JobStartDate DESC) FROM hrEmployeeWorkPlace WITH(NOLOCK)) AS EmployeeWorkPlace ON EmployeeWorkPlace.CurrAccCode = cdCurrAcc.CurrAccCode AND EmployeeWorkPlace.CurrAccTypeCode = cdCurrAcc.CurrAccTypeCode AND EmployeeWorkPlace.CompanyCode = cdCurrAcc.CompanyCode AND EmployeeWorkPlace.SortOrder = 1 LEFT OUTER JOIN cdWorkPlace WITH(NOLOCK) ON cdWorkPlace.CompanyCode = EmployeeWorkPlace.CompanyCode AND cdWorkPlace.WorkPlaceCode = EmployeeWorkPlace.WorkPlaceCode LEFT OUTER JOIN dbo.ztSinifEgitimiDurum ON ztSinifEgitimiDurum.KisiID = cdCurrAcc.CurrAccCode AND ztSinifEgitimiDurum.KisiTipiID = cdCurrAcc.CurrAccTypeCode WHERE cdCurrAcc.CurrAccTypeCode = 8 AND cdCurrAcc.CurrAccCode<> SPACE(0) AND ztSinifEgitimiDurum.AtamaID = " + AtamaIDBul() + "ORDER BY 4 ", baglan);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        SqlDataAdapter da2 = new SqlDataAdapter("select * FROM dbo.ztSinifEgitimiAnket WHERE AtamaID =" + AtamaIDBul(), baglan);
                        DataSet ds2 = new DataSet();
                        da2.Fill(ds2);
    
                        Excel.Application Excel;
                        Excel.Worksheet excelWorkSheet;
                        Excel.Workbook excelWorkBook;
    
                        Excel = new Excel.Application();
                        excelWorkBook = Excel.Workbooks.Add();
                        excelWorkSheet = (Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1);
                        excelWorkSheet.Name = "Katılım Durumu";
    
                        foreach (DataTable table in ds.Tables)
                            {
                                for (int i = 1; i < table.Columns.Count + 1; i++)
                                {
                                    excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
                                }
    
                                for (int j = 0; j < table.Rows.Count; j++)
                                {
                                    for (int k = 0; k < table.Columns.Count; k++)
                                    {
                                        excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
                                    }
                                }
                            }
    
                        //                   excelWorkSheet.Cells[1, 1] = "some value";
    
                        excelWorkBook.SaveAs(fileTest);
                        excelWorkBook.Close();
                        Excel.Quit();
                        
                    }
                }

    15 Ocak 2018 Pazartesi 14:18