View Full Version : سوال: export to excel و مشکل با زبان فارسی
naeeme
یک شنبه 29 دی 1387, 12:59 عصر
من از کد زیر برای ایجاد خروجی اکسل استفاده می کنم. با اینکه در سایت فارسی به درستی نمایش داده میشه، اما در اکسل خروجی متون فارسی به صورت نامفهوم مشابه ظ…ظ„طھ درج میشن.
برای درست کردنش چی کار باید کرد؟؟
context.Response.Clear()
strContext = ""
strAryLines = source.Split(vbNewLine)
strArySource = strAryLines(0).Split(";")
For Each column As String In strArySource
strContext &= column & vbTab
Next
strContext &= Environment.NewLine
For i As Integer = 1 To strAryLines.Length - 1
strArySource = strAryLines(i).Split(";")
For j As Integer = 0 To strArySource.Length - 1
strContext &= strArySource(j) & vbTab
Next
strContext &= Environment.NewLine
Next
context.Response.Charset = "utf-8"
context.Response.ContentType = "application/vnd.ms-excel"
context.Response.AppendHeader("Content-Disposition", "inline; filename=" & name & ".xls")
context.Response.AppendHeader("Content-Length", clsEncoding.GetByteCount(strContext).ToString())
context.Response.BinaryWrite(clsEncoding.GetBytes( strContext))
context.Response.End()
mh19842008
یک شنبه 29 دی 1387, 13:09 عصر
از این استفاده کن ببین چه جوریه؟
Dim attachment As String = "attachment; filename=Contacts.xls"
Response.ClearContent()
Response.AddHeader("content-disposition", attachment)
Response.ContentType = "application/ms-excel"
Dim sw As StringWriter = New StringWriter()
Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
Dim frm As HtmlForm = New HtmlForm()
GridView1.Parent.Controls.Add(frm)
frm.Attributes("runat") = "server"
frm.Controls.Add(GridView1)
'GridView1.RenderControl(htw)
frm.RenderControl(htw)
Response.Write(sw.ToString())
Response.End()
naeeme
دوشنبه 30 دی 1387, 15:42 عصر
مشکل این هست که من اصلا گرید ویو ندارم که بخوام اطلاعات اون رو بخونم!!
من می خوام محتویات یک string رو در اکسل قرار بدم.
naeeme
چهارشنبه 16 بهمن 1387, 12:42 عصر
واقعا برای من جای سواله که تا به حال کسی به این مشکل برنخورده که توی این 16 روز هیچ کس به این سوال جوابی نداده؟؟؟
چرا با وجود استفاده از فونت استاندارد و یونیکد همچنان در اکسل مشکل مشاهده اطلاعات وجود داره؟
Behrouz_Rad
چهارشنبه 16 بهمن 1387, 13:09 عصر
عرض شود که شما اگر به کد اعمال متداول با GridView نگاه کنی، می بینی که باید یونیکد بودن متن رو مشخص کنی.
<meta http-equiv=Content-Type content=""text/html; charset=utf-8"">
ضمن اینکه نیاز به BinaryWrite هم نداری و Write کافیه.
موفق باشید.
babila
پنج شنبه 21 آبان 1388, 23:42 عصر
عرض شود که شما اگر به کد اعمال متداول با GridView نگاه کنی، می بینی که باید یونیکد بودن متن رو مشخص کنی.
<meta http-equiv=Content-Type content=""text/html; charset=utf-8"">
موفق باشید.
میشه لطف کنید و بگید این utf-8 رو در قطعه کد بالاباید کجا مشخص کنیم؟
Behrouz_Rad
جمعه 22 آبان 1388, 11:11 صبح
در Response.Write
minaalamshahi
جمعه 19 خرداد 1391, 10:12 صبح
من اینطوری استفاده کردم جواب نمیده
Response.Clear();
Response.Buffer = true;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.
Now.ToString("yyyyMMdd") + ".xls");
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
minaalamshahi
جمعه 19 خرداد 1391, 10:13 صبح
اگه اشتباه دارم utf8 رو استفاده می کنم بهم بگین
چون اینطوری جواب نمیده
fanavaco
دوشنبه 27 آذر 1391, 00:31 صبح
سلام
فکر کنم این طوری مشکل حل می شه
اینا اضافه کنید .
Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
کد کامل :
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName2.xls");
Response.Charset = "UTF-8";
Response.ContentType = "application/x-msdownload";
Response.HeaderEncoding = System.Text.UTF8Encoding.UTF8;
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
Response.Write(sw.ToString());
Response.End();
}
تست کردم جواب داد . نمونه پروژه را می زارم .
موفق باشید . ملکوتی
96794
Behrouz_Rad
دوشنبه 27 آذر 1391, 07:03 صبح
این روش دیگه منسوخ شده. از کتابخانه ی EPPlus (http://epplus.codeplex.com/)استفاده کنید.
saeed_sho
دوشنبه 27 آذر 1391, 09:51 صبح
ببینید این چطوره
Private Sub ExportToSpreadsheet(ByVal dt As DataTable, ByVal name As String)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment; filename=" & name & ".xls")
Response.Charset = ""
Dim sw As New System.IO.StringWriter()
Dim hw As New HtmlTextWriter(sw)
Dim grv_export As New GridView()
grv_export.DataSource = dt
grv_export.AllowPaging = False
grv_export.DataBind()
grv_export.RenderControl(hw)
Response.Output.Write(sw.ToString())
Response.Flush()
Response.End()
grv_export.Dispose()
End Sub
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.