folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Asp.Net İle Word (.Doc) Belgesi Oluşturma ??



Asp.Net İle Word (.Doc) Belgesi Oluşturma ??

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    onrkrsy
    onrkrsy's avatar
    Kayıt Tarihi: 15/Ekim/2010
    Erkek

    FileStream ile .doc uzantılı bir word belgesi oluşturabiliyrum.

    Sorunum yazdırdığım içerğinin kenar boşluklarını ayarlayamıyorum.

    Yani oluşturduğum word belgesi yazdırılmak istendiğinde, normal kenar boşluklu bir sayfa olarak yazdırdığı için içerik 2.sayfaya kayıyor. Word belgesinin kenar boşluklarını ayarlama ve sayfalar arası kesme koyma( iki sayfayı ayırmak için) imkanım var mı?   

    Word componentini kullanırsam bu sorunumu halledebilirmiyim bu konuyla ilgili bir makaleye rastlayan varsa paylaşırsa sevinirim?

     

    dosyayı oluştururken yazdığım kodlar. 

    FileStream fs = new FileStream(Server.MapPath("~/belge/belge.doc"),FileMode.Create);

     StreamWriter sw = new StreamWriter(fs);

    sw.Write("<!DOCTYPE html PUBLIC '-//W3C//DTD ..."); // Tüm HTML'i  olduğu gibi yazdırıyorum.

    sw.Flush();

    sw.Close();


    https://medium.com/@onrkrsy
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    1905
    1905's avatar
    Kayıt Tarihi: 30/Eylül/2005
    Erkek
    worde oyle yazamassin. interop yada openxml kullanmalisin. her 2sinden de kenar bosluklarini ayarlayabilirsin ama her seferinde degismiyosa bu boyutlar, bos bir dosyada bu degisiklikleri yap ve kaydet sonra onu kullan (programatik olusturma yani)

    Ey Türk! Üstte mavi gök çökmedikçe, altta yağız yer delinmedikçe, senin ilini ve töreni kim bozabilir !
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek

    senin yaptıgın sadece uzantıyı doc yapmak. wordle bunu açabilme sebebin wordun desteklemesi fakat senin dogru yaptıgından değil. öncelikle stringini düzgün bir formatta worde export etmelisin.bu sayede wordun özelliklerine hakim olabilirsin.bunun için bir kaç tane başarılı sınıf mevcut. openxml bu konuda oldukça başarılıdır.

    http://msdn.microsoft.com/en-us/library/dd469465(office.12).aspx  

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    Interop ile yapabilirsin ancak tavsiye etmem. Sunucuda Office kurulu olması gerekiyor ve COM ile eriştiğin için her process için sunucuda Word açılıyor. OpenXML kullanabilirsin ancak çok karışık (en azından beni araştırdığım düzeyde işlemleri yapmak çok zordu) ama basit birşey için kullanabilirsin. Ayrıca 3rd party componentler var bu işler için (Mesela Aspose, Sprire.Doc).


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    onrkrsy
    onrkrsy's avatar
    Kayıt Tarihi: 15/Ekim/2010
    Erkek

    Interopla istediğimi  yaptım. Visiual Studio ile kendi bilgisayarımda da sunucuda da çalışıyor fakat iis'e attığım zaman bir web sitesi olarak tarayıcan açtığımda 

    aşağıdaki hatayı alıyorum izinlerle ilgili bi problemim var sanırım fakat Web.Congfig Dosyasına

    " <identity impersonate="true" userName="Administrator" password="***"/> " komutunuda ekledim.

     

    Bir Component olarak word u kullandığım için word dosyarı izinlerinide ayarlamam gerekirmi acaba?

    Sorun ne olabilir? 

     

     

    HATA:

    Word sorunla karşılaştı.

    Açıklama: Geçerli web isteği yürütülürken işlenmemiş özel durum oluştu. Lütfen hata ve kod içinde kaynaklandığı yer hakkında daha fazla bilgi almak için yığın izlemesini gözden geçirin. 

    Özel Durum Ayrıntıları: System.Runtime.InteropServices.COMException: Word sorunla karşılaştı.

    Kaynak Hatası: 

    Satır 324:
    Satır 325:                Object oTemplatePath = Server.MapPath("~/"+belge);
    Satır 326: oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing); Satır 327:
    Satır 328:                foreach (Word.Field myMergeField in oWordDoc.Fields)


    Kaynak Dosya: C:\Users\Administrator\Desktop\personel\WebApplication4\Default.aspx.cs    Satır: 326 

    Yığın İzleme: 

    [COMException (0x800a13e9): Word sorunla karşılaştı.]
       Microsoft.Office.Interop.Word.Documents.Add(Object& Template, Object& NewTemplate, Object& DocumentType, Object& Visible) +0
       WebApplication4._Default.htmlolustur() in C:\Users\Administrator\Desktop\personel\WebApplication4\Default.aspx.cs:326
       WebApplication4._Default.Button1_Click(Object sender, EventArgs e) in C:\Users\Administrator\Desktop\personel\WebApplication4\Default.aspx.cs:40
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3707

     





    https://medium.com/@onrkrsy
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NuLL29
    NuLL29's avatar
    Kayıt Tarihi: 09/Temmuz/2007
    Erkek

    hocam componet kullanmadan olmazmı diye düşünürken daha önce buna benzer birşey yapmıştım.

     

    public

     

    class

    DisariAktar

    {

    publicvoid Dosya(Literal literal, string fileName, string fileType)

    {

     string attachment = "attachment; filename=" + fileName + " " + DateTime.Now.ToString() + "." + fileType;HttpContext.Current.Response.ClearContent();HttpContext.Current.Response.Charset = "utf-8";HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");HttpContext.Current.Response.AddHeader("content-disposition", attachment);HttpContext.Current.Response.ContentType = "application/" + fileType;//yada ms-exelStringWriter sw = newStringWriter();HtmlTextWriter htw = newHtmlTextWriter(sw);

    literal.RenderControl(htw);

     if (fileType == "doc")

    {

    HttpContext.Current.Response.Write(sw.ToString());HttpContext.Current.Response.Flush();HttpContext.Current.Response.End();

    }

     }

     }

     kullanırkende

     

    protected void Button1_Click(object sender, EventArgse)

    {

    DisariAktar aktar = newDisariAktar(); 

     

    aktar.Dosya(Literal1,

    "DosyaAdi", "doc");

    }

     

     

     

    sen server a kaydetmek istiyorsan ona göre düzeltirsin.

     

    word e yazılmasını istediğin metini literalin textine atayacaksın.


    .::::Tesadüfen Doğdum Mecburen Yaşıyorum Zorudan Ölücem:::...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    onrkrsy
    onrkrsy's avatar
    Kayıt Tarihi: 15/Ekim/2010
    Erkek

    Hocam Bu şekilde Word'ün özelliklerini kullanamıyorum yani kenar boşluklarını ayarlıyamıyorum mesela...


    NuLL29 bunu yazdı:
    -----------------------------

    hocam componet kullanmadan olmazmı diye düşünürken daha önce buna benzer birşey yapmıştım.

     

    public

     

    class

    DisariAktar

    {

    publicvoid Dosya(Literal literal, string fileName, string fileType)

    {

     string attachment = "attachment; filename=" + fileName + " " + DateTime.Now.ToString() + "." + fileType;HttpContext.Current.Response.ClearContent();HttpContext.Current.Response.Charset = "utf-8";HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");HttpContext.Current.Response.AddHeader("content-disposition", attachment);HttpContext.Current.Response.ContentType = "application/" + fileType;//yada ms-exelStringWriter sw = newStringWriter();HtmlTextWriter htw = newHtmlTextWriter(sw);

    literal.RenderControl(htw);

     if (fileType == "doc")

    {

    HttpContext.Current.Response.Write(sw.ToString());HttpContext.Current.Response.Flush();HttpContext.Current.Response.End();

    }

     }

     }

     kullanırkende

     

    protected void Button1_Click(object sender, EventArgse)

    {

    DisariAktar aktar = newDisariAktar(); 

     

    aktar.Dosya(Literal1,

    "DosyaAdi", "doc");

    }

     

     

     

    sen server a kaydetmek istiyorsan ona göre düzeltirsin.

     

    word e yazılmasını istediğin metini literalin textine atayacaksın.


    -----------------------------


    https://medium.com/@onrkrsy
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    NuLL29 bunu yazdı:
    -----------------------------

    hocam componet kullanmadan olmazmı diye düşünürken daha önce buna benzer birşey yapmıştım.

     

    public

     

    class

    DisariAktar

    {

    publicvoid Dosya(Literal literal, string fileName, string fileType)

    {

     string attachment = "attachment; filename=" + fileName + " " + DateTime.Now.ToString() + "." + fileType;HttpContext.Current.Response.ClearContent();HttpContext.Current.Response.Charset = "utf-8";HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");HttpContext.Current.Response.AddHeader("content-disposition", attachment);HttpContext.Current.Response.ContentType = "application/" + fileType;//yada ms-exelStringWriter sw = newStringWriter();HtmlTextWriter htw = newHtmlTextWriter(sw);

    literal.RenderControl(htw);

     if (fileType == "doc")

    {

    HttpContext.Current.Response.Write(sw.ToString());HttpContext.Current.Response.Flush();HttpContext.Current.Response.End();

    }

     }

     }

     kullanırkende

     

    protected void Button1_Click(object sender, EventArgse)

    {

    DisariAktar aktar = newDisariAktar(); 

     

    aktar.Dosya(Literal1,

    "DosyaAdi", "doc");

    }

     

     

     

    sen server a kaydetmek istiyorsan ona göre düzeltirsin.

     

    word e yazılmasını istediğin metini literalin textine atayacaksın.


    -----------------------------

    hacım bu söylediğinle arkadaşın istediği çok farklı şeyler :D ters mantık yemez yani :)

    hocam hazır companent kullanmak zorundasın gibi..


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    1905
    1905's avatar
    Kayıt Tarihi: 30/Eylül/2005
    Erkek

    kardeşim şunu bi net olarak anla: wordün içeriğini filestream ile değiştiremezsin. elindeki bir stringi filestream ile word e yazamassın. word açıldığında hata verir. sen PC'nde bunu ignore edersin bir daha çıkmaz karşına o hata, ama başkaları o dökümanı doğru düzgün kullanamaz. wordun belli standartları var ve bu string yazmak kadar kolay olsaydı, emin ol bu kadar uğraşmazdı kimse. 

    Interop makinadan makinaya farklılık gösterir, sıkıntı yaratabilir. sen OpenXML'i araştır. OpenXML word 2007 ve sonrasını destekler. C# OpenXML DLL'ini kullanarak en sağlıklı şekilde word üzerinde istediğin herşeyi yapabilirsin.

     

    OpenXML SDK download linki:

    http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124 

     

    Dosya yaratmak için:

    http://blog.stuartwhiteford.com/?p=33

    http://openxmldeveloper.org/discussions/formats/f/13/p/5218/158267.aspx

    MSDN kaynakları:

    http://msdn.microsoft.com/en-us/library/dd440953(v=office.12).aspx

    http://msdn.microsoft.com/en-us/office/ee441239

    http://msdn.microsoft.com/library/bb656295(office.12).aspx

    http://msdn.microsoft.com/library/bb739835(office.12).aspx

    http://msdn.microsoft.com/library/bb727374(office.12).aspx

     

    Sayfaya özel ayarlar için:

    http://msdn.microsoft.com/library/bb308936


    Ey Türk! Üstte mavi gök çökmedikçe, altta yağız yer delinmedikçe, senin ilini ve töreni kim bozabilir !
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    onrkrsy
    onrkrsy's avatar
    Kayıt Tarihi: 15/Ekim/2010
    Erkek

    DocX.dll diye birşey buldum ve onunla hazır bir word belgesi içinde değişiklik yaptım. Yani  taslağı oluşturdum, kendimce değişken yerlere bir kodlama yaptım dosyayı açıp onları replace ettim. Yani dosya içinde <<tckimlik>> yazan yeri çektiğim klimlik numarası ile değiştirdim.  Şimdilik işimi gördü..

    Blogta kodlarıyla anlatmaya çalıştım belki işinize yarar...  Saolun yardımlarınız için...

    http://onurkarasoy.blogspot.com/2012/04/aspnet-ile-template-kullanarak-word-doc.html 

     


    https://medium.com/@onrkrsy
Toplam Hit: 3437 Toplam Mesaj: 10