Bu yazımızda WPF Form üzerinde Word dosyasının XPS formatına çevirilerek DocumentViewer kontrolü içinde görüntülenmesini sağlayan bir örnek gerçekleştireceğiz. Yazının sonunda indirme linkinden projeyi indirebilirsiniz. Boş bir WPF Form oluşturarak projemizi oluşturmaya başlayalım.
WPF Formumuza aşağıdaki şekilde 1 adet DocumentViewer, 1 adet TextBox ve 1 adet Button ekleyelim.
Xaml kodları aşağıdaki gibi olacaktır.
1 2 3 4 5 6 7 8 9 10 |
<Grid> <DocumentViewer HorizontalAlignment="Left" Margin="0,42,0,0" Name="documentViewer1" VerticalAlignment="Top" Height="508" Width="766" /> <TextBox Height="29" HorizontalAlignment="Left" Margin="6,6,0,0" Name="SelectedFileTextBox" VerticalAlignment="Top" Width="276" /> <Button Content="Browse" Height="30" HorizontalAlignment="Right" Margin="0,6,353,0" Name="BrowseButton" VerticalAlignment="Top" Width="122" Click="BrowseButton_Click" /> </Grid> |
Şimdi de gerekli olan Referansları projemize ekleyeceğiz.
Add-Reference tıklayarak ReachFramework ve
Microsoft.Word.16.0 Object Library referanslarını projemize dahil ediyoruz.
Şimdi kodlarımıza geçelim. Aşağıdaki kütüphaneleri projemize ekleyerek başlayacağız.
1 2 3 4 5 6 |
using System.IO; using Microsoft.Office.Interop.Word; using Microsoft.Win32; using System.Windows.Xps.Packaging; |
Bu işlemden sonra ConvertWordDocToXPSDoc isimli metodumuzla word dosyasını Xps formatına dönüştürecek kodları oluşturacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
private XpsDocument ConvertWordDocToXPSDoc(string wordDocName, string xpsDocName) { Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application(); wordApplication.Documents.Add(wordDocName); Document doc = wordApplication.ActiveDocument; try { doc.SaveAs(xpsDocName, WdSaveFormat.wdFormatXPS); wordApplication.Quit(); XpsDocument xpsDoc = new XpsDocument(xpsDocName, System.IO.FileAccess.Read); return xpsDoc; } catch (Exception exp) { string str = exp.Message; } return null; } |
Son olarak Browse butonu için OpenFileDialog ile dosya seçimini yapma ve DocumentViewer içinde görüntüleme işlemini gerçekleştiren kodları oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
private void BrowseButton_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.DefaultExt = ".doc"; dlg.Filter = "Word Dosyası|*.docx;*.doc"; Nullable<bool> result = dlg.ShowDialog(); if (result == true) { if (dlg.FileName.Length > 0) { SelectedFileTextBox.Text = dlg.FileName; string newXPSDocumentName = String.Concat(System.IO.Path.GetDirectoryName(dlg.FileName), "\\", System.IO.Path.GetFileNameWithoutExtension(dlg.FileName), ".xps"); documentViewer1.Document = ConvertWordDocToXPSDoc(dlg.FileName, newXPSDocumentName).GetFixedDocumentSequence(); } } } |
Kodlarımızın tamamı ve ekran görüntüleri aşağıdaki gibi olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.IO; using Microsoft.Office.Interop.Word; using Microsoft.Win32; using System.Windows.Xps.Packaging; namespace Wpf_Doc { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : System.Windows.Window { public MainWindow() { InitializeComponent(); } private XpsDocument ConvertWordDocToXPSDoc(string wordDocName, string xpsDocName) { Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application(); wordApplication.Documents.Add(wordDocName); Document doc = wordApplication.ActiveDocument; try { doc.SaveAs(xpsDocName, WdSaveFormat.wdFormatXPS); wordApplication.Quit(); XpsDocument xpsDoc = new XpsDocument(xpsDocName, System.IO.FileAccess.Read); return xpsDoc; } catch (Exception exp) { string str = exp.Message; } return null; } private void BrowseButton_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.DefaultExt = ".doc"; dlg.Filter = "Word Dosyası|*.docx;*.doc"; Nullable<bool> result = dlg.ShowDialog(); if (result == true) { if (dlg.FileName.Length > 0) { SelectedFileTextBox.Text = dlg.FileName; string newXPSDocumentName = String.Concat(System.IO.Path.GetDirectoryName(dlg.FileName), "\\", System.IO.Path.GetFileNameWithoutExtension(dlg.FileName), ".xps"); documentViewer1.Document = ConvertWordDocToXPSDoc(dlg.FileName, newXPSDocumentName).GetFixedDocumentSequence(); } } } } } |
Merhaba bir sorum var Wpf ile web üzerindeki bir veri tabanına bağlanabilir miyiz. Mesal php ile nasıl veri tabanına bağlanıp veri çekiyorsak Wpf ile de yapmak istiyorum yapılabilir mi yapılırsa nasıl oluyor bunu soruyorum.
MSsql server bağlantısı ile sunucudaki veritabanına bağlanıp işlem yapman mümkün. Sql server kullanıcı adı şifre ve port bilgileri ile veritabanı tablolarına uzaktan erişmek mümkün .
Cevap için teşekkürler. Bu konu ile ilgili küçük bir konu anlatımı yaparsanız çok sevinirim. Benim gibi bu konuyu bilmeyen diğer kişilerde yararlanabilirler. Kolay gelsin.