Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > C# Excel 2003 ve 2007 farkı
Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
22.12.2010-09:19 #72349
Merhabalar

C#'ta klasik olarak gridview'dan excel'e export etme işlemini yapıyorum aşağıdaki kod ile.

Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=cat5.xls");
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
    //Response.ContentEncoding = System.Text.Encoding.UTF7;
    Response.Charset = "windows-1254";
    //Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.ContentType = "application/vnd.ms-excel";
    //Response.Cache.SetCacheability(HttpCacheability.NoCache);
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView1.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();


Excel 2003 ile açtığımda açarken veya karakter sorunu oluşmuyor.
Fakat 2007 ile açtığımda aşağıdaki resimdeki gibi hata alıyorum ve karakterler de bozuk çıkıyor.




Fikri olan var mı?





www.sonergonul.net





Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
22.12.2010-10:45 #72350
MS bazen insanı çıldırtıyor.

Excel de html açmaya çalıştığında her türlü 2007 bu uyarıyı veriyor. Html dosyasını elinle olşutursan bile uyarı alıyorsun. Bu hatayı almamak için bir yöntem bulan varsa cidden faydalı olur :)

Karakterlerin bozuk görünmemesi için kodlamayı değiştirmeyi deneyebilirsin. windowskodlaması yerine utf-8 kodlama ile denedin mi?





Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
22.12.2010-11:09 #72351
Response.Charset = "UTF8"


ve

Response.ContentEncoding = System.Text.Encoding.UTF8;


yaptım fakat karakter sorunu hala düzelmedi. Ben de çıldırmak üzereyim zaten.
İlk resimdeki hatayı neden alıyor olabilirim peki onu anlayamadım thinking





www.sonergonul.net





Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
22.12.2010-13:39 #72352
O hatanın nedeni oluşturduğun dosyanın bir excel dosyası değilde html dosyası olmasından kaynaklanıyor. Dosyanı notpad ile açarsan içinde senin datatable'ın table tr td tagları ile saklandığını göreceksin.

Excel html dosyalarını uzantısını xls yapınca otomatik gösterebiliyor. Ama Excel 2007 önce seni bir uyarayım diyor açtığın orjinalde excel tablosu değil başka bir şey diye. Sanırım Office in ayarları ile ilgili birşey sen ne yaparsan yap bu hatayı kod tarafında gideremezsin gibime geliyor.





Yazar
enginkdal


avatar

Kayıt: 09.01.2008
22.12.2010-14:07 #72353
 string dosyaadi;
        dosyaadi = "Rapor.xls";
        String attachment = "attachment; filename=" + dosyaadi;
        Response.Clear();
        Response.ClearHeaders();
        Response.ClearContent();
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
        Response.Charset = "windows-1254";
        Response.AddHeader("content-disposition", attachment);
        Response.ContentType = "application/ms-excel";
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        HtmlForm frm = new HtmlForm();
        GridView1.Parent.Controls.Add(frm);
        frm.Controls.Add(GridView1);
        frm.RenderControl(htw);
     Response.Write(" <meta http-equiv='Content-Type' content='text/html; charset=windows-1254' />" + sw.ToString());
        Response.End();



bu şekilde çözmüştüm sanırım. tam hatırlamıyorum ama.





B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.






Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
22.12.2010-14:37 #72354
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
Response.Charset = "windows-1254";


yaptığımda türkçe karakterleri göstermiyor bu sefer de d oh
Hatayı geçtim zaten bi türlü düzelmiyo..

Edit: UTF7 yaptım düzeldi biggrin





www.sonergonul.net





Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
22.12.2010-16:37 #72355
Hala çözüm arıyorum .NET sevenler..





www.sonergonul.net





Yazar
hazakli


avatar
Istanbul
Kayıt: 19.01.2007
22.12.2010-16:48 #72356
Encoding.GetEncoding("ISO-8859-9") kullan.

Bir de şu şekilde bir fonksion kullanırsan excellde türkçe karakterler düzgün şekilde görüneceğini sanıyorum.

Not: fonksiyondaki & ve # arasındaki boşluk olmasın. Ben burda görünebilmesi için boşluk yaptım.

private string ConvertTrChar(string text)
    {
        text = text.Replace("Ğ", "& #286;");
        text = text.Replace("Ü", "& #220;");
        text = text.Replace("Ş", "& #350;");
        text = text.Replace("İ", "& #304;");
        text = text.Replace("Ö", "& #214;");
        text = text.Replace("Ç", "& #199;");
        text = text.Replace("ğ", "& #287;");
        text = text.Replace("ü", "& #252;");
        text = text.Replace("ş", "& #351;");
        text = text.Replace("ı", "& #305;");
        text = text.Replace("ö", "& #246;");
        text = text.Replace("ç", "& #231;");
        return text;
    }







Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb