Merhaba arkadaşlar bu makalemizde Sql veritabanındaki verileri alıp excel sayfasında tablo oluşturacağız. Bu örnekte Fiyat sütununu; excel sayfasında oluşturacağımız tabloda databar lı bir şekilde gösterimini sağlayacağız.
Screenshot
Şekil 1
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace excel_add_sql
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection baglan;
SqlDataAdapter da;
DataSet ds;
object misValue = System.Reflection.Missing.Value;
private void btnExceleAktar_Click(object sender, EventArgs e)
{
baglan = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|kategori.mdf;Integrated Security=True;Connect Timeout=30");
string sql = "Select * From [Table]";
da = new SqlDataAdapter(sql, baglan);
ds = new DataSet();
da.Fill(ds);
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
Excel.Range chartRange;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = xlWorkBook.Sheets["Sayfa1"];
//veritabanindan sutun isimlerini aliyoruz.
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
//2. satirdan itibaren sutun isimlerini excel hucrelerine yaziyoruz.
xlWorkSheet.Cells[2, i+2] = ds.Tables[0].Columns[i].ToString();
}
//veritabanindanverileri aliyoruz.
for (int j =0; j < ds.Tables[0].Rows.Count ; j++)
{
xlWorkSheet.Cells[j+3, 2] = ds.Tables[0].Rows[j].ItemArray[0].ToString();
xlWorkSheet.Cells[j + 3,3] = ds.Tables[0].Rows[j].ItemArray[1].ToString();
xlWorkSheet.Cells[j +3, 4] = ds.Tables[0].Rows[j].ItemArray[2].ToString();
xlWorkSheet.Cells[j + 3, 5] = ds.Tables[0].Rows[j].ItemArray[3].ToString();
}
//excel sayfasinda tablo basligimizi ekliyoruz
chartRange = xlWorkSheet.Range["b1", "e1"];
//b1.. e1 hucrelerini birlestiriyoruz.
chartRange.Merge();
chartRange.FormulaR1C1 = "DUNYA KLASIKLERİ";
chartRange.HorizontalAlignment = 4;
chartRange.VerticalAlignment = 4;
chartRange.Cells.Font.Bold = true;
chartRange.Cells.Font.Size = 16;
// sutun isimlerini a2.. e2 hucrelerine ekliyoruz.
chartRange = xlWorkSheet.Range["b2", "e2"];
chartRange.HorizontalAlignment = 4;
chartRange.VerticalAlignment = 4;
//tablo sinir cizgilerini belirleyecegimiz hucreleri belirtiyoruz.
chartRange = xlWorkSheet.Range["b2", "e12"];
chartRange.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlMedium, Excel.XlColorIndex.xlColorIndexAutomatic, Excel.XlColorIndex.xlColorIndexAutomatic);
//tablo cizgilerinin rengini belirliyoruz
chartRange.Borders.Color = Color.Navy;
//tablonun cizgi stilini belirliyoruz.
chartRange.Borders.LineStyle = 2;
//tablonun cizgi kalinligini belirliyoruz.
chartRange.Borders.Weight = 2;
//e hucrelerine databar i ekliyoruz.
chartRange = xlWorkSheet.Range["e3", "e12"];
chartRange.FormatConditions.AddDatabar();
chartRange.FormatConditions[chartRange.FormatConditions.Count].ShowValue = true;
chartRange.FormatConditions[chartRange.FormatConditions.Count].SetFirstPriority();
//databarin rengini belirliyoruz.
chartRange.FormatConditions[1].BarColor.color = Color.OrangeRed;
chartRange.FormatConditions[1].BarColor.TintAndShade = 0;
//excel dosyasini kaydediyoruz.
xlWorkSheet.SaveAs(@"D:\databar.xlsx");
xlWorkBook.Close();
xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
releaseObject(xlWorkSheet);
MessageBox.Show("Excel dosyasi olusturuldu !");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
}
finally
{
GC.Collect();
}
}
}
}
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN
0 comments:
Yorum Gönder