C# - Excel Dosyası Oluşturma


8.10.2019 / Serdar Kardan


C# - Excel Dosyası Oluşturma

Bu yazıda C# ile kod yazarak bir Excel dosyası oluşturmayı, bir sayfa ve içerik oluşturarak dosya olarak kaydetmeyi işleyeceğiz.

Aşağıdaki kod örneğinin çalışması için öncelikle sisteminizde Excel’ in kurulu olması gerekiyor.

Ek olarak nesne modeline C # ile erişmek için projenize Microsoft Excel 15.0 Nesne Kitaplığı'nı eklemeniz gerekir. Aşağıdaki adımları takip ederek projenize Excel referans kütüphanesini ekleyebilirsiniz.

Proje ismine sağ tıklayıp Add > Reference yolunu takip edin.

How to create Excel in C Sharp - Excel Dosyası Oluşturma

Reference Manager ekranında COM listesi altında Microsoft Excel X.X Object Library seçeneğini işaretleyin ve OK butonuna basarak projenize Excel referans kütüphanesini ekleyebilirsiniz.

How to create Excel in C Sharp - Excel Dosyası Oluşturma

Öncelikle Excel uygulama nesnesini başlatıyoruz.

Excel.Application xlApp = new
Microsoft.Office.Interop.Excel.Application();

Excel dosyasını oluşturmadan önce sisteminizde Excel’in yüklü olup olmadığını kontrol etmemiz gerekiyor.

if (xlApp == null)
{
    MessageBox.Show("Sisteminizde Excel kurulu değil...");
    return;
}

Daha sonra bir yeni çalışma sayfası oluşturuyoruz ve içerik giriyoruz.

xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

xlWorkSheet.Cells[1, 1] = "Sıra NO";
xlWorkSheet.Cells[1, 2] = "İsim";
xlWorkSheet.Cells[2, 1] = "1";
xlWorkSheet.Cells[2, 2] = "Serdar";
xlWorkSheet.Cells[3, 1] = "2";
xlWorkSheet.Cells[3, 2] = "Barış";

Burada hücreleri doldurma işini bir döngüyle destekleyebilirsiniz örneğin… Yani veritabanından alacağınız kayıtları istediğiniz şekilde düzenledikten sonra birçok programdan beklendiği gibi dışarı veri aktarımı ile Excel dosyası oluşturabilirsiniz...

Eğer ikinci bir sayfa oluşturmanız gerekiyorsa aşağıdaki şekilde bu sayfayı oluşturabilirsiniz.

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
xlWorkSheet.Cells[1, 1] = "İkinci sayfa içeriğini de ekleyebilirsiniz…";

Dosya içeriğini oluşturduğumuza göre artık dosyayı kaydedebiliriz.

xlWorkBook.SaveAs("deneme-dosya.xls");

İşlemin tamamlanmasından sonra oluşturduğumuz nesnenin hafızadan temizlenmesi gerekir. Bellek yönetimi ile ilgili metodları bulabileceğiniz Marshal Class’ ını içeren System.Runtime InteropServices namespace’ ini import etmelisiniz.

using System.Runtime.InteropServices;

Sonrasında da nesneleri bırakabiliriz…

Marshal.ReleaseComObject (excelWB);
Marshal.ReleaseComObject (excelApp);

Aşağıdaki kod bloğunu kullanarak örnek projeniz için kullanabilirsiniz...

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace CreateExcel
{
	public partial class MainForm : Form
	{
		public MainForm()
		{
			InitializeComponent();
		}

		private void btnCreateExcel_Click(object sender, EventArgs e)
		{
			Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

			if (xlApp == null)
			{
				MessageBox.Show("Sisteminizde Excel kurulu değil...");
				return;
			}

			Excel.Workbook xlWorkBook;
			Excel.Worksheet xlWorkSheet;
			object misValue = System.Reflection.Missing.Value;

			xlWorkBook = xlApp.Workbooks.Add(misValue);
			xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

			xlWorkSheet.Cells[1, 1] = "Sıra NO";
			xlWorkSheet.Cells[1, 2] = "İsim";
			xlWorkSheet.Cells[2, 1] = "1";
			xlWorkSheet.Cells[2, 2] = "Serdar";
			xlWorkSheet.Cells[3, 1] = "2";
			xlWorkSheet.Cells[3, 2] = "Barış";

			xlWorkBook.SaveAs("c:\\deneme-dosya.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
			xlWorkBook.Close(true, misValue, misValue);
			xlApp.Quit();

			Marshal.ReleaseComObject(xlWorkSheet);
			Marshal.ReleaseComObject(xlWorkBook);
			Marshal.ReleaseComObject(xlApp);

			MessageBox.Show("Excel dosyası c:\\deneme-dosya.xls adresinde oluşturuldu...");
		}
	}
}

 


Proje Dosyaları : CreateExcel.sln

Referanslar :
Microsoft.Office.Interop.Excel Namespace

Marshal Class 



8.10.2019 - 8036


Etiketler : c#,Excel,excel dosyası oluşturma,System.Runtime.InteropServices,Microsoft.Office.Interop.Excel Names
Leave a Comment:

Bunlar da ilginizi çekebilir
C# - Tarih – Zaman Metodları
DateTime Metodları - .Net içerisinde tarih ve zaman değerleri DateTime veri türü ile ifade edilirler.
Windows 10 Safe Mode
Windows 10'da bilgisayarınızı güvenli modda başlatma
Excel - BAĞ_DEĞ_DOLU_SAY Formülü Kullanımı
Bir tabloda özellikle doldurulması gereken bir sütun ya da hücre grubu olduğunu varsayalım. Bunlardan kaç tanesinin doldurulduğunu saymak gerekebilir. Yani aslında içinde veri olan hücreleri saymak istiyoruz.
 

En çok Okunanlar



Bumerang - Yazarkafe