Soran
SQL'den Excel Dosyası oluşturmak (Outlook Mail Eki Olarak)

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); }
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 18 Ocak 2018 Perşembe 14:19
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(); }
-
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(); } }