C#.Net ile Microsoft Word’de Otomatik İmza Oluşturma

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 12:25

Öncelikle makalenin içeriği ve Windows uygulamamız hakkında bir özet oluşturayım.

 

Proje: Windows Uygulaması

Programlama dili: C#.Net

Kullanılacak namespace: Microsoft.Office.Interop.Word

Yazacağımız classın adı: WordAuto.Cs

Uygulamadaki araçlar: 6 label, 6 textbox, 2 button, 1 errorprovider

 

Öncelikle tasarımımızın nasıl olması gerektiğini göstereyim. Yukarıda yazdığım özetteki araçları kullanıyoruz, errorprovider’ı eklemeyi unutmuyoruz.

 

 

Görüntüden de anlaşılacağı gibi, gerekli kısımları doldurduktan sonra oluştur butonuna tıkladığımızda bir Microsoft word projesi açılacak ve ilgili kısımlar transfer edilmiş olacak. Böylece kendimize hazır imza oluşturabilecek, ayrıca bir Windows uygulamasından word ile nasıl iletişim kurulabileceği örneklendirilmiş olacaktır.

 

Şimdi bu formumuzun kod kısmına geçiyoruz. Tüm kod açıklamaları satır aralarında olacaktır. Bu kodlamadan sonra, yukarıdaki özette bahsettiğim WordAuto.Cs classını yazacağız.

 

Formumuzun kodları:

 

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

 

namespace MSWordApp

{

/// <summary>

/// Summary description for Form1.

/// </summary>

public class WordForm : System.Windows.Forms.Form

{

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Label label3;

private System.Windows.Forms.Label label4;

private System.Windows.Forms.Label label5;

private System.Windows.Forms.Label label6;

private System.Windows.Forms.Label label7;

private System.Windows.Forms.Button button2;

private System.Windows.Forms.Button btnCreate;

private System.Windows.Forms.TextBox txtName;

private System.Windows.Forms.TextBox txtPlace;

private System.Windows.Forms.TextBox txtEmail;

private System.Windows.Forms.TextBox txtCompany;

private System.Windows.Forms.TextBox txtDesignation;

private System.Windows.Forms.TextBox txtAge;

private System.Windows.Forms.ErrorProvider errorProvider;

private IContainer components;

 

public WordForm()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

 

//

// TODO: Add any constructor code after InitializeComponent call

//

}

 

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

 

[STAThread]

static void Main()

{

Application.Run(new WordForm());

}

 

private void button2_Click(object sender, System.EventArgs e)

{

‘iptal buttonuna tıklandıgında formumuz kapanacak

Application.Exit();

}

 

private void btnCreate_Click(object sender, System.EventArgs e)

{
‘oluştur buttonuna tıkladıgımızda wordauto classımızdan nesnemizi üretecegiz
‘öncelikle degerlerimizi tutacak bir arraylist olusturuyoruz

WordAuto word = new WordAuto();

ArrayList array = new ArrayList();

bool filled = true;

 

if ( ( txtName.Text).Trim().Length.Equals(0) )

{
‘txtname textboxına girilecek ad değerini alırken

‘boş girilme esnasında uyarı verilmesini sağlıyoruz
‘bu işlemi diğer kontrollerde de kullanacagımızdan dolayı
‘tekrar tekrar kod aralıklarına acıklamasını yazıp karısıklık olusturmak ıstemıyorum

errorProvider.SetError(txtName,"cannot be empty" );

filled = false;

}

if( ( txtAge.Text ).Trim().Length.Equals(0) )

{

errorProvider.SetError( txtAge,"cannot be empty" );

filled = false;

}

if( ( txtDesignation.Text ).Trim().Length.Equals(0) )

{

errorProvider.SetError( txtDesignation,"cannot be empty" );

filled = false;

}

if( ( txtPlace.Text ).Trim().Length.Equals(0) )

{

errorProvider.SetError( txtPlace,"cannot be empty" );

filled = false;

}

if( ( txtEmail.Text ).Trim().Length.Equals(0) )

{

errorProvider.SetError( txtEmail,"cannot be empty" );

filled = false;

}

if( ( txtCompany.Text ).Trim().Length.Equals(0) )

{

errorProvider.SetError( txtCompany,"cannot be empty" );

filled = false;

}

 

if ( filled == true )

{
‘tüm kontrollerimize de aynı ıslemı yaptıktan sonra

‘arraylistimize gerekli değerleri yolluyoruz
‘son olarak olusturdugumuz word dosyasına arraylistimizin içeriğini aktarıyoruz

array.Insert(0,txtName.Text);

array.Insert(1,txtAge.Text);

array.Insert(2,txtDesignation.Text);

array.Insert(3,txtCompany.Text);

array.Insert(4,txtPlace.Text);

array.Insert(5,txtEmail.Text);

 

word.CreateFile(array);

}

 

}

}

}

 

İşin bu kısmı oldukça kolaydı. Kontrollerimize gerekli değerlerin girilmesini sağlayıp, boş bırakıldığı takdirde errorprovider yoluyla uyarı vermesini sağladık. Bunun yanında oluşturduğumuz arraylistin içeriğini de tanımlamış olup, oluştur butonuna tıklandıktan sonra arraylist içeriğinin worde nasıl aktarıldığını da görmüş olduk.

 

En başta belirtmiştim wordauto.cs isimli bir class oluşturacağımızı. Bu classtan yararlanarak word dosyası oluşturuyor ve içeriğini giriyorduk. Şimdi isterseiz wordauto.cs isimli classımızın kodlarını, ve kodların arasındaki açıklamaları yazalım.

 

using System;

using System.Collections;
‘kullanacagımız namespacei eklemeyı unutmuyoruz

using Word = Microsoft.Office.Interop.Word;

 

namespace MSWordApp

{

/// <summary>

/// Summary description for WordAuto.

/// </summary>

public class WordAuto

{

private Word.Application wordApp;

private Word.Document wordDoc;

 

 

public WordAuto()

{

//

// TODO: Add constructor logic here

//

}

public void CreateFile(ArrayList array)

{

‘create file isimli voidimizde word dosyamızın özelliklerini belirliyoruz
object missing = System.Reflection.Missing.Value;

object fileName = "normal.dot";

object newTemplate = false;

object docType = 0;

object isVisible = true;


‘word uygulamamızın hangi nesneden üretilecegini ve nasıl olusturulacagını belirtiyoruz

wordApp = new Word.ApplicationClass();

wordDoc = wordApp.Documents.Add(ref fileName, ref newTemplate, ref docType, ref isVisible);

wordApp.Visible = true;

wordDoc.Activate();

 

‘word dosyamız olusturulurken wındows formumuzdan gelecek degerlerin
‘nasıl bıcımlendırılecegını belırtıyoruz
‘gordugunuz gibi her degeri farklı paragraflara gonderıyoruz
‘boylece olusturucagımız ımza yada herhangı bır yazı daha duzenlı olusuyor
‘degerleri aktarırken, degerlerin hangi kontrolden gelecegini de belirtiyoruz
‘tabiki bu isimizi arraylistimiz yapiyoruz
‘zira tüm kontrollerimizden giden degerleri bir arraylistte kontrol altına almıstık
wordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;

wordApp.Selection.Font.Bold = (int)Word.WdConstants.wdToggle;

wordApp.Selection.TypeText("Name : "+ array[0].ToString());

wordApp.Selection.TypeParagraph();

wordApp.Selection.TypeText("Age : "+ array[1].ToString());

wordApp.Selection.TypeParagraph();

wordApp.Selection.TypeText("Designation : " + array[2].ToString());

wordApp.Selection.TypeParagraph();

wordApp.Selection.TypeText("Company : " + array[3].ToString());

wordApp.Selection.TypeParagraph();

wordApp.Selection.TypeText("Place : " + array[4].ToString());

wordApp.Selection.TypeParagraph();

wordApp.Selection.TypeText("Email : "+array[5].ToString());

wordApp.Selection.TypeParagraph();

 

}

}

}

 

Tüm bu işlemlerden sonra formumuzu çalıştırın ve ad bölümünü doldurup diğer bölümleri boş bırakın. Sonra oluştur butonuna tıklayın. Böylece errorprovider’ın çalışıp çalışmayacağını görebilirsiniz. İşte buna bir örnek:

 

 

Gördüğünüz gibi ad alanını doldurup diğer alanları boş bıraktıktan sonra oluştur butonuna tıklarsak errorproviderlar beliriyor ve bize doldurmamız gereken noktaları işaretliyor.

 

Tüm alanları doldurduktan sonra oluştur dediğimizde word dosyasının açıldığını ve içeriğin iletildiğini görebilirsiniz. İşte sonuç:

 

Gördüğünüz gibi tüm içerik aktarıldı. Bunu yazınızın hangi bölgesine isterseniz aktarabilirsiniz.

 

Böylece Windows uygulamasıyla Microsoft word arasında hem iletişim kurmayı pekiştirdik hem de c#.net ile bir kolaylık daha öğrendik. Umarım yararlı olmuştur.

 

Farklı makalelerde görüşmek üzere. C# ve .Net ile kalın.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Software | Articles | Windows

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Şifahen değil acilen!

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Ocak 2009  >>
PaSaÇaPeCuCuPa
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster

Ne Dinliyorum?

Kirpi - TearDrop (9 saat önce)
Kirpi - My Name Is Kirpi (9 saat önce)
Kirpi - The Song (9 saat önce)
Kirpi - Spell (10 saat önce)
Huseyin Karadayi - Bonus Track Funk Clarinet (String Mix) (10 saat önce)
Huseyin Karadayi - Sacred Gate (10 saat önce)
Huseyin Karadayi - Exotica (10 saat önce)
Huseyin Karadayi - Take Me Away / No Time To Waste (Vocal By Melis Sökmen) (10 saat önce)
Huseyin Karadayi - Eyes Don't Lie (Duet By Enoi & Funky C) (10 saat önce)
Huseyin Karadayi - This Way (Usy Groove) (10 saat önce)

Ne Okuyorum?


Haftanın Sözü


"Sukûnetim asaletimdendir;
Lâkin her lâfa verilecek bir cevabım var.
Bir bakarım lâf lâfmı diye,
Birde bakarım söyleyen adammı diye.."

Mevlânâ Celaleddin-i Belhi Rumi
(1207-1273)

Adanmış Hayatlar

"Zaten aşklar hep yalan dolan,
Sonu hep acı hüsran.
Bize her sevdadan geriye kalan
Sadece Galatasaray..
"

Son Dakika

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı

Ziyaretçi Sayısı