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 - 8054


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

Bunlar da ilginizi çekebilir
Windows Presantation Foundation Terminal Server Print Hatası
Windows Server 2008 Terminal server üzerinden uzak kullanıcılar çıktı almaya çalıştığında bazen bu can sıkıcı hatayla karşılaşmaktayız. Bu yazı ile hatanın çözümünü sizlerle paylaşmak istiyorum.
C# - Guid Kullanımı
Bu yazımızda rastgele veri katarları oluşturmak için Guid kullanımını işleyeceğiz.
Microsoft Lisanslama Terminolojisi
Lisans bazıları için gerekli, bazıları için gereksiz, bazıları için korku unsuru ama hayatımızın vazgeçilmez bir unsuru.
 

En çok Okunanlar



Bumerang - Yazarkafe