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