.Net 4.0 COM İyileştirmeleri başlığı altında birçok yeni yeteneğe sahiptir. Şubat ayında verdiğim seminerlerden C# 4.0 Yenilikleri - 2 seminerinde COM İyileştirmeleri başlığında özellikle bu yeniliklerden bahsettim.
BilgeAdam‘daki bir öğrencimin sorusu üzerine bu yazımda Excel ve Word kullanımına ilişkin bir örnek yapacağım.
Öncelikle yeni bir Console Application projesi oluşturalım ve referanslara
referanslarını ekleyelim.
Bu örnekte yapmak istediğimiz;
Hazırsanız, Program.cs dosyamıza aşağıdaki kodları yazmakla başlayalım;
using direktiflerini yazdığımz yere
using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word; using System.Diagnostics;</pre>
satırlarını ekleyelim
Yeni bir Excel dosyası oluşturmak ve görünür kılmak için;
var excel = new Excel.Application(); excel.Visible = true;
Bu Excel dosyasına yeni bir sheet eklemek ve tablonun başlıklarını yazmak için;
excel.Workbooks.Add(); excel.Cells[1, 1].Value = "Uygulama Adı"; excel.Cells[1, 2].Value = "Hafıza Kullanımı";
Tabloya en çok hafıza kullanan uygulamaları eklemek için;
int i = 2; foreach (var p in Process.GetProcesses().OrderByDescending(p => p.WorkingSet64).Take(10)) { excel.Cells[i, 1].Value = p.ProcessName; excel.Cells[i, 2].Value = p.WorkingSet64; i++; }
Tabloyu Excel dosyasında yeni bir sheet içerisine chart olarak eklemek için;
Excel.Range range = excel.Cells[1, 1]; Excel.Chart chart = excel.ActiveWorkbook.Charts.Add(After: excel.ActiveSheet); chart.ChartWizard(Source: range.CurrentRegion, Title: Environment.MachineName + " Toplam Hafıza Kullanımı"); chart.ChartStyle = 45;
Tabloyu panoya kopyalamak, yeni bir Word dosyası açıp, içine yapıştırmak için;
chart.CopyPicture(Excel.XlPictureAppearance.xlScreen, Excel.XlCopyPictureFormat.xlBitmap, Excel.XlPictureAppearance.xlScreen); var word = new Word.Application(); word.Visible = true; word.Documents.Add(); word.Selection.Paste();
Tüm kodları tekrar yazarsak;
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word; using System.Diagnostics; namespace COMIyilestirmeleri_OfficeUygulamasi { class Program { static void Main(string[] args) { var excel = new Excel.Application(); excel.Visible = true; excel.Workbooks.Add(); excel.Cells[1, 1].Value = "Uygulama Adı"; excel.Cells[1, 2].Value = "Hafıza Kullanımı"; int i = 2; foreach (var p in Process.GetProcesses().OrderByDescending(p => p.WorkingSet64).Take(10)) { excel.Cells[i, 1].Value = p.ProcessName; excel.Cells[i, 2].Value = p.WorkingSet64; i++; } Excel.Range range = excel.Cells[1, 1]; Excel.Chart chart = excel.ActiveWorkbook.Charts.Add(After: excel.ActiveSheet); chart.ChartWizard(Source: range.CurrentRegion, Title: Environment.MachineName + " Toplam Hafıza Kullanımı"); chart.ChartStyle = 45; chart.CopyPicture(Excel.XlPictureAppearance.xlScreen, Excel.XlCopyPictureFormat.xlBitmap, Excel.XlPictureAppearance.xlScreen); var word = new Word.Application(); word.Visible = true; word.Documents.Add(); word.Selection.Paste(); } } }
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484