20 Nisan 2013 Cumartesi

C# - Excel Aktarma ve Grafik Çizdirme

      Merhabalar, bu yazımda hepimizin işine yarayabilecek bir uygulamadan bahsedeceğim. Uygulamamızda random olarak ürettiğimiz 10 adet sayıyı Excel'e kaydeteceğiz ve grafik çizdireceğiz. İlk iş olarak Solutions Explorer penceresindeki References'e sağ tıklayıp Add Reference diyoruz. Açılan penceren Microsoft Office 14.0 Object Library ve Microsoft.Office.Interop.Excel'i ekliyoruz. Daha sonra using kısmında bunları belirtmemiz gerekiyor. using kısmına şunu ekliyoruz:

using OfficeExcel = Microsoft.Office.Interop.Excel;

      Öncelikle 10 random sayı üretiyoruz. Kod:         

private void button1_Click(object sender, EventArgs e)
{
    ArrayList liste = new ArrayList();
    Random sayi = new Random();
    for (int i = 0; i < 10; i++)
    {
        liste.Add(sayi.Next(0, 100));
    }
    ExcelAktar(liste);
}

      Sayılarımızı rastgele ürettik ve ExcelAktar fonksiyonumuza gönderdik. Kod:

static OfficeExcel.Application ExcelUygulama = new OfficeExcel.Application();
static OfficeExcel.Workbook ExcelKitap = ExcelUygulama.Workbooks.Add(Type.Missing);
static OfficeExcel.Worksheet ExcelSayfa = ExcelUygulama.ActiveSheet;
public void ExcelAktar(ArrayList liste)
{
   ExcelUygulama.Visible = true;
            
   //dizimizi excele aktarıyoruz öncelikle
   for(int i = 0; i < liste.Count; i++)
   {
       object hucre1 = ExcelSayfa.Cells[i+2, 2];
OfficeExcel.Range bolge1 =ExcelSayfa.get_Range(hucre1, hucre1);
bolge1.Value2 = liste[i];
   }

//grafik çizmek için gerekli nesnemizi oluşturduk öncelikle...
OfficeExcel.ChartObjects grafikciz = (OfficeExcel.ChartObjects)ExcelSayfa.ChartObjects(Type.Missing);
//grafiği nasıl çizeceğimi belirledim.. 4 parametre kullandık bu alanı belirtmek için
//1-soldan uzaklığı.. 2-üstten uzaklığı.. 3-alanın genişliği.. 4-alanın yüksekliği..
OfficeExcel.Chart grafik = grafikciz.Add(240, 15, 300, 300).Chart;
//burada excelden hangi hücredeki verileri kullarak grafik çizeceğimi belirttim
OfficeExcel.Range cizimalan = ExcelSayfa.get_Range("B2""B" + (liste.Count + 1));
//çizimimizi yaptırıyoruz..
grafik.SetSourceData(cizimalan, Type.Missing);
//grafiğimizin çizim şekli.
grafik.ChartType = OfficeExcel.XlChartType.xlLineMarkers;
//dosyayı kaydeteceğimiz yol.. ve kaydetme işlemi
string yol = @"C:\Users\PC\Desktop\" + DateTime.Now.ToShortDateString() + ".xlsx";
ExcelKitap.SaveAs(yol, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, OfficeExcel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        
}

        İşte bu kadar basit. istediğiniz gibi kodları düzenleyebilirsiniz. dosyayı kaydeteceğiniz yeri, hangi hücrelere veri kaydeteceksiniz, grafiğin çizim alanı, grafik tipi, hangi verileri kullanarak grafik çizeceksiniz vs vs vs...  Kolay gelsin :)


C# - Word'e Veri Aktarma

      Merhaba arkadaşlar, bu yazımda C# ile veri tabanından çekip datagridview'da görüntülediğimiz verileri word belgesine aktarmaktan bahsedeceğim. Öncelikle Solutions Explorer penceresindeki References'e sağ tıklayıp Add Reference diyoruz. Açılan penceren Microsoft Office 14.0 Object Library ve Microsoft.Office.Interop.Word'ü ekliyoruz. Daha sonra using kısmında bunları belirtmemiz gerekiyor. using kısmına şunu ekliyoruz:
using Word = Microsoft.Office.Interop.Word;

      Ben ilk başta basit bir entity framework sorgusu ile verilerimi datagridview'a aktardım. Daha Sonra WordAktar isminde bir fonksiyon yazdım. Kodlarım:


//öncelikle word uygulamasını ve dokümanını oluşturuyoruz.
static Word.Application WordUygulama = new Word.Application();
Word.Document WordDocument = WordUygulama.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
public void WordAktar()
{
     //word'ü görünür yaptık ve A4 formatında olduğunu belirttik
     WordUygulama.Visible = true;
     WordDocument.PageSetup.PaperSize = Word.WdPaperSize.wdPaperA4;
            
     //yazının sağa dayalı ve kalın olmasını belirttik..     WordUygulama.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
     WordUygulama.Selection.Font.Bold = (int)Word.WdConstants.wdFirst;

     //datagridview'deki verileri word e aktardık.
     for (int i = 0; i < dataGridView1.Rows.Count; i++)
     {
         for (int j = 0; j < dataGridView1.Columns.Count-1; j++)
         {
  WordUygulama.Selection.TypeText(dataGridView1[j, i].Value.ToString() + " ");
         }
         WordUygulama.Selection.TypeParagraph();
     }

     //dosyayı kaydeteceğimiz yolu belirttik VE kaydettik
string Wyol = @"C:\Users\PC\Desktop\" + DateTime.Now.ToShortDateString() + ".docx";
WordDocument.SaveAs(Wyol, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

}

      Artık kodu geliştirmek size kalmış :) İsterseniz yazı tipi ve boyutunu, görüntüleyeceğiniz kağıt formatını da ayarlayabilirsiniz. Son olarak ben dosya yolu olarak masaüstünü belirttim, siz bu yolu istediğiniz şekilde değiştirebilirsiniz.


2 Nisan 2013 Salı

C# - Matlab Bağlantısı

      Merhabalar, ilk yazımda sizlerle tezimde de kullandığım bir yöntemden bahsedeceğim.  Yaptığım araştırmalar sonucunda pek de net bir kaynak bulamadığım için elimden geldiğince açıklamaya çalışacağım. Matlab kodunu dll’e çevireceğiz ve bunu C# ile birlikte kullanacağız. Bu uygulamada Matlab R2008a ve Visual Studio 2010 kullandım.

      Öncelikle Matlab’da basit bir .m file oluşturalım ve ismi de ciz olsun. Şu kodları içine yazalım ve kaydedelim.
function ciz()

    t=-2:0.001:2;
    m=sin((2*pi).*t);
    plot(t,m);
    grid on;

end

Sonra Command Window penceresine deploytool yazalım ve enter'a basalım. Deployment Tool penceresi açılacaktır.


















Bu pencereden ilk menüden yeni bir proje yaratıyoruz.






















      Biz .Net’i seçiyoruz. İsmini ve nereye kaydedileceğini belirliyoruz. Sonra OK butonuna tıklıyoruz. Deployment penceremizde dosyamız oluştu. Projemize sağ tıklıyoruz Add File diyoruz ve kaydettiğimiz .m file dosyasını bulup ’a diyoruz.


















      Daha sonra da Deployment Tool penceresindeki Save butonuna tıklıyoruz. Bunları yaptıktan sonra yine aynı deployment tool penceresindeki setting butonuna tıklıyoruz.  Açılan pencereden General sekmesindeki Compiler Options File ayarına geliyoruz. Burada browser butonuna tıklayıp kaydettiğimiz .prj uzantılı dosyayı seçiyoruz. Ve arkasında Ok diyoruz penceremizi kapatıyoruz. Brada son olarak ise deployment tool penceresindeki build the project sekmesine tıklıyoruz ve projemizin dll dosyasını oluşturuyoruz. Bu işlem bilgisayarınıza bağlı olarak uzun sürebilir.

      Şimdi dll dosyamız hazır. Visual Studio’da bir tane form uygulaması açıyoruz ve bir tane buton bir tane de label ekliyoruz. Daha sonra References’a sağ tıklayıp Add Reference diyoruz. İlk olarak matlab’ı kurduğumuz dizindeki MWArray.dll dosyasını eklemeliyiz. Benim bilgisayarımdaki yolu:  
D:\Program Files\MATLAB\R2008a\toolbox\dotnetbuilder\bin\win32\v2.0
Sonra kendi oluşturduğumuz dll’i ekliyoruz. Deployment Tool’da oluşturduğumuz projeyi kaydettiğimiz yerde bir tane de klasör oluşmuştur. O klasörün içinde distrib adında oluşan klasörün içindeki dll dosyamızı seçiyoruz ve tamam deyip projemize ekliyoruz. Daha sonra using kısmına

using MathWorks.MATLAB.NET.Arrays;
using Untitled1;

diyerek eklediğimiz dll dosyalarını tanımlıyoruz. Butonun çift tıklayıp altına şu kodları yazıyoruz:

            Untitled1class obj = new Untitled1class();
            obj.ciz();

daha sonra projemizi çalıştırıp butona tıkladığımızda grafiğimiz açılacaktır.