Makale Özeti

Küçük bir uygulama ile, Word 2003 de XML elementlerinin nasıl kullanılacağını ve .net arayüzünden bu elementlerle nasıl bağlantı kurulacağını göreceğiz. Bu örneği, .net ortamında word dökümanından çıktı almak için de projelerinizde kullanabilirsiniz.

Makale

Word 2003 'de XML Elementlerinin Kullanımı ve.NET İle Bağlantı

Küçük bir uygulama ile, Word 2003 de XML elementlerinin nasıl kullanılacağını ve .net arayüzünden bu elementlerle nasıl bağlantı kurulacağını göreceğiz. Bu örneği, .net ortamında word dökümanından çıktı almak için de projelerinizde kullanabilirsiniz.

Örneğimizde, bir şirket içerisinde yapılan satın alma talepleri kullanılarak teklif mektubu oluşturacağız. Kullanılan veritabanı, tablo ve alan bilgileri aşağıdaki gibidir.



Bu tablo satın alma yazılımı içerisinde kullanılan ve personelin malzeme talebinde bulunduğu bilgiler bu bölüme yazılmakta. Bizim amacımız onaylanan talepler için teklif mektup oluşturup bu mektubu teklif gönderimi için kullanmak.

Hem windows hem de web ortamında, raporlama işlemini gerçekleştirebilirsiniz. Biz örneğimizde windows ortamını kullanacağız. C:\ sürücüsü altında Teklif adında bir klasör oluşturup windows projemizi buraya kaydedelim.

İlk önce onaylanan kayıtları bir liste halinde görüntüleyelim. Bu işlem için formumuza DataGridView ve Button nesnesi ekleyip özelliklerini aşağıdaki gibi ayarlayalım.



Nesne Adı
DataGridView dgTeklifler
Button btnTeklifYazdir

Onaylanan talepleri listelemek için formun yüklenme olayında çağrılması için bir sub yazalım.

Imports System.Data.SqlClient

Public Class frmTeklif

Sub OnaylanmisTeklifler()
Dim cnn As New SqlConnection("data source=.;initial catalog=VSTO;integrated security=SSPI")
Dim da As New SqlDataAdapter("Select * from tblMalzemeTalep Where talepOnayDurum=1", cnn)
Dim ds As New DataSet
da.Fill(ds)
dgTeklifler.DataSource = ds.Tables(0)
End Sub

Private Sub frmTeklif_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load OnaylanmisTeklifler()
End Sub


Bu işlem sonucunda, formu çalıştırdığınızda ekrana onaylanan talepler gelmiş olur.

Şimdi bu taleplerin çıktısını alacağımız word şemasını oluşturalım. Word şeması olarak XML şema kullanacağımız için, elementleri okuyacağımız bir xsd dosyası yaratmamız gerekiyor. Dosya içerisinde word dökümanında kullanacağımız alanları aşağıdaki gibi tanımlayıp kaydedilim. Xsd dosyasını notepad içerisinde oluşturup, C:\Teklif dizinin altına wordDokumanSemasi.xsd olarak kaydedilim.



Word programını açıp File > New komutunu uygulayalım. Paneldeki New Document bölümünden XML document seçeneğini seçelim.



XML bağlantısını yapmak için, Templates and Add-Ins tıklayalım. Karşımıza çıkan pop-up pencereden Add Schema düğmesine tıklayalım ve az önce oluşturuğumuz xsd dosyasını ekleyelim. Ekleme işleminden sonra bu xsd dosyasının eklentisi için bir ad istenmekte; Alias bölümüne Word Dokuman Seması yazıp OK tıklayalım. Görüntü aşağıdaki gibi olacaktır.



Bu işlemide tamamladıktan sonra xml elementleri dosyaya eklenir. Sol bölümdeki panelden xml elementlerini görebilirsiniz.
Dosyamızı çıktı alanacak şekilde düzenleyelim. İstediğimiz metinleri yazıp ilişkilendireceğimiz alanları belirlemek için de xml elementlerini istediğimiz bölümlere sürükle bırak yapalım. Görüntü aşağıdaki gibidir.



Bu dosyayı yine C:\Teklif dizininin altına teklifMektup.dot adlandırarak kaydedilim.
Not: Eğer word dökümanında xml elementlerinin görüntülenmesini istemiyorsanız Show XML tags in the document onayını kaldırınız.

En son işlemimiz windows fomdaki listelenen bilginin worde aktarılmasına geldi. Kodlamaya geçmeden önce projemize Microsoft Word 11.0 Object Library referansını ekleyip import edelim.

Imports word = Microsoft.Office.Interop.Word
Imports System.Xml

Button Click olayına, aşağıdaki gibi kodlarımızı yazalım.

 'Kullanacağımız word nesnelerini tanımlıyoruz
Dim uygulama As New word.Application
Dim dokuman As New word.Document

'şemanın görüntülenmesi için uygulamayı görünür yapıyoruz.
uygulama.Visible = True

'şemamızın dosya yolunu belirliyoruz. ve dokumanımızı oluşturuyoruz.
Dim semaDosyasi As String = "C:\Teklif\TeklifMektup.dot"
dokuman = uygulama.Documents.Add(semaDosyasi)

'dokumandaki her bir elemeni bulup içeriğine
'datagridview nesnesindeki seçili değeri yazdırıyoruz.
For i As Integer = 1 To dokuman.XMLNodes.Count
Select Case dokuman.XMLNodes.Item(i).BaseName
Case "talepEden"
  dokuman.XMLNodes.Item(i).Text = dgTeklifler.CurrentRow.Cells(1).Value
Case "talepTarihi"
  dokuman.XMLNodes.Item(i).Text = dgTeklifler.CurrentRow.Cells(2).Value
Case "talepMalzemeKod"
  dokuman.XMLNodes.Item(i).Text = dgTeklifler.CurrentRow.Cells(3).Value
Case "talepMalzemeAdet"
  dokuman.XMLNodes.Item(i).Text = dgTeklifler.CurrentRow.Cells(4).Value
End Select
Next

dokuman = Nothing
uygulama = Nothing

Programınızı çalıştırıp, datagridden istenilen kaydı seçtikten sonra düğmeye tıkladığınızda, teklif mektubunuzun çıktısını word belgesi olarak alabilirsiniz.

HoşÇakalın...



Makaledeki Uygulama