Makale Özeti

Microsoft Office teknolojilerini bildiginiz üzere windows ve web uygulamalarımızın içerisinde kısıtlı versiyonları ile kullanabiliyoruz. Bu makalemizde Office componentlerini web uygulamalarımıza nasıl ekleyebiliriz onu inceleyecegiz. Bu componentlerle aynı Office uygulamalarının bütün yetenekleri olmasada, web için optimize edilmiş hali ile kullanıcılarımıza sunabiliyoruz, bu tabii bize çeşitli esneklikler sunuyor. Burada web uygulamaları için en çok ihtiyaç duyabileceginiz componet büyük olasılıkla excel ve grafik(chart) çizimi olacaktır. Elbette pivot tablolarıda oluşturmak mümkün.

Makale


Intranet ortamları için geliştirilen web uygulamalarının koordine çalışmasını istedigimiz en önemli uygulama bir çok şirket için MS Office'dir. Masaüstünde kullandıgımız Excel ve baglantılı Chart'lar, geliştirdigimiz web uygulamaları ile entegre etmenin en kolay yollarından bir tanesine göz atacagız, bu makalemizde. Microsoft Office v9 yani Office 2000 ve v10 (Office XP) dan beri bu controlleri uygulamalarımaza eklemek oldukca kolay. Hatta grafik bile çizdirmek mümkün, elimizde bir excel dosyası olmadan. Yani farklı veri kaynakları kullanarak.

Bu grafikler için çok farklı veri kaynakları göstermekde mümkün, bir OLAP küpü, XML dosyası gibi bir çok seçenek
var. Tabii bu componentleri Office'yi kurarken eklemek lazım veya http://www.microsoft.com/downloads adresinden
indirmek.

OWC11 veya OWC10 kurulumu tamamlandıktan sonra, Visual Studio açıyoruz ve OWC yi "Refence" olarak ekliyoruz. Bunu nasıl yapıyoruz, ilk olarak "Solution Explorer" da "References" sag click yapıyoruz.

Daha sonra "Add Reference" diyoruz. Yeni açılan pencerede "Browse" diyor ve şu path'i gösteriyoruz.

C:\Program Files\Common Files\Microsoft Shared\Web Components\11\OWC11.DLL

veya sizin kullandıgınız Office versiyonuna uygun olan dll'i seçiyorsunuz. Aşagıdaki gibi:

Ve en son onaydan sonra DLL, web uygulamamıza ekleniyor. Şimdi yapmamız gereken namespace alanına

using OWC11;

satırını eklemek. Artık hazırlık aşaması bitti, şimdi uygulamamıza başlıyalım. Ben örnek olarak bir chart çizdirecegim.
Olayı daha iyi gormek için bir buton ekledim WebForma ve click eventi ile çizimi oluşturucaz. Click eventi aşagıdaki gibi;
 

             private void btn_goster_Click(object sender, System.EventArgs e)
             {

             //Ilk olarak bir ChartSpace nesnesi yaratıyoruz. Grafik nesnemiz bu uzayın içinde olacak
             ChartSpace myCSpace = new ChartSpaceClass (); 

             //Simdi grafi mychart ismi ile oluşuturuyoruz
             ChChart mychart = myCSpace.Charts.Add (0); 

             //grafigin şeklini seçiyoruz
             mychart.Type = ChartChartTypeEnum.chChartTypeColumnStacked3D; 

             //özelliklerini giriyoruz, bu özellikler Stacked 3Dye ait, farlı chart tipleri için farklı özellikler var
             mychart.HasTitle = true;
             mychart.HasLegend = true;
             mychart.Legend.Border.DashStyle = OWC11.ChartLineDashStyleEnum.chLineDash;
             mychart.Legend.Position = OWC11.ChartLegendPositionEnum.chLegendPositionTop;
             mychart.Title.Caption = "Örnek Chart - Aylık Giderler"

             //verileri giriyourz
             string categoriler = "Telefon Faturası,Kredi Kartı,Kira,Akaryakıt,Muhtelif";
             string tutarlar = "108,510,75,100,40"

             //Yeni bir seri ekliyoruz, columnstacked3d icin farkli seriler girmek mumkun
             mychart.SeriesCollection.Add(0); 

             //seriye verileri giriliyoruz
             mychart.SeriesCollection[0].Caption="Giderler";
             mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,(int)ChartSpecialDataSourcesEnum.chDataLiteral, categoriler);
             mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,(int)ChartSpecialDataSourcesEnum.chDataLiteral,tutarlar);

             //şimdide kullanıcıya görüntülüyoruz
             Response.ContentType= "image/gif";
             Response.BinaryWrite((byte[])myCSpace.GetPicture("gif",640,480)); 

             //sonlandırıyoruz
             Response.End();

             }

Bütün açıklamaları comment olarak ben codla yazdım. Oldukca basit gördünüz gibi, bilinmesi gereken bu grafigin server tarafında üretildigi. Bu yüzden clientte hiç bir işlem gerçekleştirilmiyor, görüntülenmesinin dışında. Yukarıdaki kodun grafik çıktısı aşagıdaki gibi olacaktır.

 

Hepinize çalışmalarınızda başarılar diliyorum, kolay gelsin...