Kaynak kodlari indirmek için INDIR
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
namespace excel2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "C# ile Excel dosyasi olusturma.";
}
private void button1_Click(object sender, EventArgs e)
{
Excel.Application uygulama;
Excel._Workbook kitap;
Excel._Worksheet sayfa;
Excel.Range rng;
try
{
uygulama = new Excel.Application();
uygulama.Visible = true;
//Sayfa ve Kitap olusturuluyor.
kitap = (Excel._Workbook)(uygulama.Workbooks.Add(Missing.Value));
sayfa = (Excel._Worksheet)kitap.ActiveSheet;
//SAYFA ÖZELLIKLERI eger belirtmezseniz Excel varsayilan degerlerle kendini açar.
sayfa.PageSetup.CenterHorizontally = true;//sayfayi yatayda ortala
sayfa.PageSetup.CenterVertically = false;//sayfayi dikeyde ortala
sayfa.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperA4;//A4 kagidi kullanmak için.
sayfa.PageSetup.TopMargin = uygulama.CentimetersToPoints(2.5);//üst bosluk cm cinsinden
sayfa.PageSetup.BottomMargin = uygulama.CentimetersToPoints(2);//alt bosluk
sayfa.PageSetup.LeftMargin = uygulama.CentimetersToPoints(1.3);//sol bosluk
sayfa.PageSetup.RightMargin = uygulama.CentimetersToPoints(1);//sag bosluk
sayfa.PageSetup.HeaderMargin = uygulama.CentimetersToPoints(1.5);//üstbilgi boslugu
sayfa.PageSetup.FooterMargin = uygulama.CentimetersToPoints(1.5);//altbilgi boslugu
sayfa.Name = "Not Defteri";//Sayfa ismi
//Sayfadaki hücre basliklari . cells hücre demektir.
sayfa.Cells[6, 1] = "ADI";
sayfa.Cells[6, 2] = "SOYADI";
sayfa.Cells[6, 3] = "ADI SOYADI";
sayfa.Cells[6, 4] = "NOT";
sayfa.Cells[47,8] = "Mehmet Emin KAYA";
//Font özellikleri ayarlandi.
sayfa.get_Range("H47", "H47").Font.Bold = true;
sayfa.get_Range("H47", "H47").Font.Size = 12;
sayfa.get_Range("H47", "H47").Font.Name ="Times New Roman";
sayfa.get_Range("A6", "D6").Font.Bold = true;
sayfa.get_Range("A6", "D6").Font.Size = 12;
sayfa.get_Range("A6", "D6").Font.Name = "Times New Roman";
sayfa.get_Range("A6", "D6").VerticalAlignment =Excel.XlVAlign.xlVAlignCenter;
sayfa.get_Range("A6", "D11").HorizontalAlignment =Excel.XlVAlign.xlVAlignCenter;
//iki boyutlu dizi olusturuluyor.
string[,] dizi_isimler = new string[5, 2];
dizi_isimler[0, 0] = "Melih";
dizi_isimler[0, 1] = "YURDAGEL";
dizi_isimler[1, 0] = "Ugur";
dizi_isimler[1, 1] = "ERDOGAN";
dizi_isimler[2, 0] = "Meryem";
dizi_isimler[2, 1] = "NUR";
dizi_isimler[3, 0] = "Ismail";
dizi_isimler[3, 1] = "KÖSE";
dizi_isimler[4, 0] = "Ahmet";
dizi_isimler[4, 1] = "GÜLEÇIN";
//A7-B11 hücreleri arasina ad soyad bilgileri yerlestiriliyor.
sayfa.get_Range("A7", "B11").Value2 = dizi_isimler;
//C7 - C11 hücrelerine A2 ile B2 yi birlestrien excel formülü yaziliyor. (=A7 & " " & B7).
rng = sayfa.get_Range("C7", "C11");
rng.Formula = "=A7 & \" \" & B7";
//D7 ile D11 hücreleri arasina excel formülü olan rasgele sayi üreten formül yaziliyor.(=S_SAYI_ÜRET()*100000).
rng = sayfa.get_Range("D7", "D11");
rng.Formula = "=S_SAYI_ÜRET()*100";
rng.NumberFormat = "0.0";
//A6 ile D6 arasi hücreler, otomatik sikistir islemine tabi tutuluyor.
rng = sayfa.get_Range("A6", "D6");
rng.EntireColumn.AutoFit();
grafik_olustur(sayfa);//olusturulan metod çagirildi.
uygulama.Visible = true;
uygulama.UserControl =true;
sayfa.Cells[1, 3] = " TÜRK TELEKOM ANADOLU TEKNIK LISESI";
sayfa.Cells[2, 3] = " 11-F ÖGRENCILERI DERS NOTLARI";
sayfa.Cells[13, 3] = " Sinif Ortalamasi";
sayfa.get_Range("A1", "C3").Font.Bold = true;
sayfa.get_Range("A1", "C3").Font.Size = 12;
sayfa.get_Range("A1", "C3").Font.Name = "Times New Roman";
}
catch (Exception hata)
{
String hata_mesaji;
hata_mesaji = "HATA: ";
hata_mesaji = String.Concat(hata_mesaji, hata.Message);//concat metodu string birlestirmek için kullanilir.
hata_mesaji = String.Concat(hata_mesaji, " Satir: ");
hata_mesaji = String.Concat(hata_mesaji, hata.Source);
MessageBox.Show(hata_mesaji, "HATA");
}
}
private void grafik_olustur(Excel._Worksheet yenisayfa)
{
Excel._Workbook kitap;
Excel.Series seri;
Excel.Range resize_range;
Excel._Chart grafik;
String mesaj;
int ay_sayisi;
//Kaç aylik bir grafik dökumani istedigini sormak için yapilmistir.
for (ay_sayisi = 4; ay_sayisi >= 2; ay_sayisi--)
{
mesaj = "SON KAÇ SINAV=> ";
mesaj = String.Concat(mesaj, ay_sayisi);//concat string birlestirmek için kullanilir.
mesaj = String.Concat(mesaj, " SINAV");
DialogResult dialog = MessageBox.Show(mesaj, "NOTLAR ?",MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)//evete basarsa döngüden break le kirilir.
break;
}
mesaj = "SON KAÇ SINAV=> ";
mesaj = String.Concat(mesaj, ay_sayisi);
mesaj = String.Concat(mesaj, " SINAV");
MessageBox.Show(mesaj, "NOTLAR ");
//Excel aktarirken yeni bir özellik belirmek istemiyorsak (varsayilan özellikle çalismasi için)
//Missing.Value yazilir.
//resize_range için uzunluk ve konum belirtildi
resize_range = yenisayfa.get_Range("E6", "E6").get_Resize(Missing.Value, ay_sayisi);
//E1 hücresinden baslayarak ay_sayisi kadar baslik yazar.
resize_range.Formula = "Not";
//Basliklarin dereceyle döndürme islemi
resize_range.Orientation = 38;
resize_range.WrapText = true;
//Basliklarin rengini ayarlariz.
resize_range.Interior.ColorIndex = 33;
//resize_range için tekrar uzunluk ve konum belirtildi
resize_range = yenisayfa.get_Range("E7", "E11").get_Resize(Missing.Value, ay_sayisi);
//belirtilen hücrelere formül yazildi.
resize_range.Formula = "=S_SAYI_ÜRET()*100";
//belirtilen hücrelerin sayi formati ayarlandi.
resize_range.NumberFormat = "0.0";
//resize_range için tekrar uzunluk ve konum belirtildi
resize_range = yenisayfa.get_Range("E6", "E11").get_Resize(Missing.Value, ay_sayisi);
//belirtilen hücreler için kenarlik olusturuldu. Olusan kenarliklarin degisik formatlarini .xlThin 'i degistirerek bakabilirsiniz.
resize_range.Borders.Weight = Excel.XlBorderWeight.xlThin;
//resize_range için tekrar uzunluk ve konum belirtildi
resize_range = yenisayfa.get_Range("E13", "E13").get_Resize(Missing.Value, ay_sayisi);
//belirtilen hücrelere formül yazildi.
resize_range.Formula = "=TOPLA(E7:E11)/5";
resize_range.NumberFormat = "0.0";
//belirtilen hücreler alt çizgi çizildi.
resize_range.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle= Excel.XlLineStyle.xlDouble;
//belirtilen hücrelere kenarlik olusturuldu.
resize_range.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).Weight= Excel.XlBorderWeight.xlThick;
//belirtilen hücrelere, dis kalin kenarlikla kaplandi.
resize_range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlMedium, Excel.XlColorIndex.xlColorIndexAutomatic, 1);
//Sayfa üzerine ilaveler oldugu belirtildi.
kitap = (Excel._Workbook)yenisayfa.Parent;
//grafik olusturuldu.
grafik = (Excel._Chart)kitap.Charts.Add(Missing.Value, Missing.Value,Missing.Value, Missing.Value);
//resize_range için tekrar uzunluk ve konum belirtildi
resize_range = yenisayfa.get_Range("E7:E11", Missing.Value).get_Resize(Missing.Value, ay_sayisi);
//Grafik sihirbazi için parametreler girildi bos birakilan yerler varsayilan deger olmasi için "Missing.Value" ile dolduruldu.
grafik.ChartWizard(resize_range, Excel.XlChartType.xl3DColumn, Missing.Value,Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//Grafik serisi olusturuldu.
seri = (Excel.Series)grafik.SeriesCollection(1);
seri.XValues = yenisayfa.get_Range("A7", "A11");
//seri bilgileri girildi.
for (int dialog = 1; dialog <= ay_sayisi; dialog++)
{
seri = (Excel.Series)grafik.SeriesCollection(dialog);
String seriesName;
seriesName = "=\"Sinav";
seriesName = String.Concat(seriesName, dialog);
seriesName = String.Concat(seriesName, "\"");
seri.Name = seriesName;
}
//Grafik konumu belirlendi.
grafik.Location(Excel.XlChartLocation.xlLocationAsObject, yenisayfa.Name);
//resize_range = (Excel.Range)yenisayfa.Rows.get_Item(8, Missing.Value); yaparsaniz 8. satirda grafik olusur.
resize_range = (Excel.Range)yenisayfa.Rows.get_Item(20, Missing.Value);
yenisayfa.Shapes.Item("Chart 1").Top = (float)(double)resize_range.Top;
//resize_range = (Excel.Range)yenisayfa.Columns.get_Item(1, Missing.Value); yaparsaniz A. sütununda grafik olusur.
resize_range = (Excel.Range)yenisayfa.Columns.get_Item(1, Missing.Value);
yenisayfa.Shapes.Item("Chart 1").Left = (float)(double)resize_range.Left;
}
}
}