ASP.NET UYGULAMALARINDA WORD DOSYASINI HTML OLARAK KAYDETMEK (WORD TO HTML)
1
Yorum
439

kez okundu..

Sizlerinde bildiği üzere, internette çeşitli konularda makale yayınlayan veya üyelerine makale yazma imkanı sunan pek çok web sitesi mevcut. Fakat internet üzerinde resimli bir doküman hazırlamak herhangi bir kelime işlemci programında  hazırlamaktan çok daha zahmetlidir.

Dolayısıyla biz üyelerimize mümkün olduğunca kolay bir ara yüz  sunmalıyız ki yazarlar makale yazmak için bizi tercih etsin.

Üyelerimiz word dosyasına makalesini yazıp hazırlasa resimlerini dilediği gibi tutup rahat rahat yerleştirse, büyültse küçültse, başlıkların paragrafların fontlarını rahat rahat ayarlasa… sonrada bizim ara yüzümüze girip o word dosyasını upload etse, bizde o word dosyasını çabucak html formatında kaydedip makaleyi  yayına hazır hale getirsek nasıl olur?

Kimse böyle bir uygulamaya burun kıvırmaz herhalde. Hemen uygulamaya koyulalım.

Öncelikle bir web form oluşturalım ve wordToHtml.aspx ismiyle kaydedelim. Daha sonra uygulamamıza Microsoft Word 12.0 Object Library  referansını ekleyelim ekliyoruz

Şimdi sayfamıza Bir FileUpload ve bir Button koyalım.

 

Butonumuza çift tıklayarak click kodumuza geçelim ve kodlarımızı yazalım.

using System;
using Microsoft.Office.Interop.Word;
using System.IO;
using System.Text;
 
public partial class _Word : System.Web.UI.Page
{
    protected void BtnWord_Click(object sender, EventArgs e)
    {
        //dosya yoksa metodu kes
        if (!FU1.HasFile)
            return;
        //dosya word dosyası değilse metodu kes
        if (FU1.PostedFile.ContentType != "application/msword" && FU1.PostedFile.ContentType != "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
            return;
 
        //word dosyasıının kaydedileceği yer
        object wordKayitYeri = Server.MapPath("~/temp.doc");
        //html dosyasının kaydedileceği yer
        object htmlKayitYeri = Server.MapPath("~/temp.htm");
 
        //word dosyasını keydediyoruz
        FU1.SaveAs(wordKayitYeri.ToString());
 
        //word uygulaması oluşturuyoruz
        ApplicationClass wordApp = new ApplicationClass();
        //html formatında kaydetmesi için
        object kayitFormati = WdSaveFormat.wdFormatFilteredHTML;
        object missing = System.Reflection.Missing.Value;
        string htmlIcerik = "";
 
        try
        {
            wordApp.Documents.Open(ref wordKayitYeri, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            Document belge = wordApp.ActiveDocument;
            //burada da html olarak kaydediyoruz
            belge.SaveAs(ref htmlKayitYeri, ref kayitFormati, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wordApp.Quit(ref missing, ref missing, ref missing);
 
            //şimdi de html olarak kaydedilen dosyayı alıp içeriğini okuyoruz ve string değişkene aktariyoruz.
            StreamReader sr = new StreamReader(htmlKayitYeri.ToString(), Encoding.Default);
            htmlIcerik = sr.ReadToEnd();
            sr.Close();
        }
        catch
        {
            wordApp.Quit(ref missing, ref missing, ref missing);
            return;
        }
    }
}
Biz  burada word dosyasını hml’ye dönüştürdük ve html dosyasının içeriğini htmlIcerik isimli değişkene aktardık. Artık bu içeriğe istediğimiz yapabiliriz. Örneğin html içeriğinin body tagları arasında kalan kısmı alıp diğer kısımlarını atabiliriz. Daha sonra lüzumsuz css class isimlerini temizleyebiliriz. Ve sonuçta elimizde kalan veriyi veritabanımıza kaydedebiliriz.

 

 

19.08.2011 tarihinde yazıldı..
Özkan ATMACA

İsminiz
Puanınız
Yorumunuz
Kalan karatkter sayısı : 500
Yorumumu Gönder
 
Akif AKINCI
Eline bilgine saglik hazir elin degmisken bence word dosyasi icerinde bulunan imajlari watermaklayarak koruma altina aldirmayi ve biraz daha amatorlere hitap edercesine yazarsan cok iyi olur. Imrendim makalelerimi arttiracam, Sistemci arkadas ve hocalarimizinda makalelerini bekleriz.

 Anasayfa | Haberler | Duyurular | Ziyaretçi Defteri | Yazarlık Başvurusu | Logolar | Linkler | GB-TEAM 

 

Destekyeri.com, Embedded By GB-TEAM 2006 |  Tüm Hakları Saklıdır . Yayınlanan yazıların izin alınmadan kopyalanması ve kullanılması  5846 sayılı Fikir ve Sanat Eserleri Yasasına göre suçtur.

GelecekBurada.com