بهم ریختگی متون فارسی در خروجی اکسل

سلام دوستان من با استفاده از کد زیر در برنامه خروجی اکسل می گیرم ولی فونت های فارسی در فایل اکسل بهم ریخته می شوند لطفا راهنمایی کنید
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=MyFiles.xls");
Response.Charset = "utf-8";
this.EnableViewState = false;

System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

gv.RenderControl(htw);

Response.Write(sw.ToString());
Response.End();​
 
درود .

من یک تکه کد برای شما میزارم . مشکل شما به نظرم از encoding باید باشه .

PHP:
Response.Clear(); 
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=" + dataExportFile.Name); 
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble()); 
Response.TransmitFile(dataExportFile.FullName);
 

mbsa

Active Member
تابع اصلی به نام ExportToExcell است که DATATABLE را به پارامتر ورودی میگیرد و فایل در سرور در پوشه files ذخیره میکند.





کد:
  private void ExporttoExcel(DataTable table)
    {
        string response = "";



        string path = Server.MapPath("~/files/export3.xls");



        StreamWriter writer = new StreamWriter(path,false, Encoding.Unicode);
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        response+=(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">");
        response += ("<font style='font-size:10.0pt; font-family:Calibri;'>");
        response += ("<BR><BR><BR>");
        //sets the table border, cell spacing, border color, font of the text, background, foreground, font height
        response += ("<Table border='1' bgColor='#ffffff' " +
          "borderColor='#000000' cellSpacing='0' cellPadding='0' " +
          "style='font-size:10.0pt; font-family:Calibri; background:white;'> <TR>");
        //am getting my grid's column headers
        int columnscount = table.Columns.Count;

        for (int j = 0; j < columnscount; j++)
        {      //write in new column
             response+=("<Td>");
            //Get column headers  and make it as bold in excel columns
             response+=("<B>");
             response+=(table.Columns[j].Caption);
             response+=("</B>");
             response+=("</Td>");
        }
         response+=("</TR>");
        foreach (DataRow row in table.Rows)
        {//write in new row
             response+=("<TR>");
            for (int i = 0; i < table.Columns.Count; i++)
            {
                 response+=("<Td>");
                 response+=(row[i].ToString());
                 response+=("</Td>");
            }

             response+=("</TR>");
        }
         response+=("</Table>");
         response+=("</font>");

        writer.Write(response);
        HttpContext.Current.Response.Write("PATH TO FILE :"+"\n" +path);
        writer.Close();
    }
 

جدیدترین ارسال ها

بالا