PDA

View Full Version : سوال: مشکل با فارسی در export to excel



minaalamshahi
جمعه 19 خرداد 1391, 00:37 صبح
با سلام
من می خوام اطلاعاتی رو که توی dataset پر کردم داخل یه فایل excel پر کنم اما روی قارسی مشکل داره کسی می دونه باید چه کنم؟
من از کد زیر استفاده می کنم

string attachment = "attachment; filename=Employee.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.ms-excel";








string tab = "";

foreach (DataColumn dc in ds.Tables[0].Columns)
{
Response.Write(tab + dc.ColumnName);
tab =




"\t";


}




Response.Write(



"\n");

int i;

foreach (DataRow dr in ds.Tables[0].Rows)
{
tab =




""; for (i = 0; i < ds.Tables[0].Columns.Count; i++)


{ Response.Write(tab + dr[i].ToString()); tab =



"\t"; }


Response.Write(



"\n");


} Response.End();

}

minaalamshahi
جمعه 19 خرداد 1391, 08:56 صبح
کسی راهی نداره
از روش زیر هم استفاده کردم مشکل حل نشد



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";

minaalamshahi
جمعه 19 خرداد 1391, 09:06 صبح
در ضمن من export از ds به excel انجام میدم از گرید ویو استفاده نمی کنم

asiehmohammadian
جمعه 19 خرداد 1391, 09:44 صبح
سلام
شما کد مربوط به گریدشم دارید؟
اگردارید توروخدا بمنم بدید من خیلی بهش احتیاج دارم
خواهش میکنم:گریه:

minaalamshahi
جمعه 19 خرداد 1391, 10:09 صبح
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=" + y +"-"+ m+"-" + d + ".xls");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();

minaalamshahi
جمعه 19 خرداد 1391, 10:50 صبح
کسی راهی برای مشکل من نداره؟

aspmaker
جمعه 19 خرداد 1391, 11:42 صبح
من واسه گرید ویو را استفاده می کنم با فارسی مشکلی نداره. اگر می خواهی براتون کدش رو بزارم.

asiehmohammadian
جمعه 19 خرداد 1391, 12:49 عصر
ممنون از پاسختون خیلی لطف کردید
ولی من این قسمتش مشکل دارم میشه راهنماییم کنید:
Response.AddHeader("content-disposition", "attachment;filename=" + y + "-" + m + "-" + d + ".xls");
این y,m,d اسم چه فایلی هستند ؟
من باید کجااضافه کنم تا برنامه خطا نده؟
اگر لطف کنید راهنماییم کنید ممنون میشم
مرسی

asiehmohammadian
جمعه 19 خرداد 1391, 12:51 عصر
لطف میکنید بذارید؟
یک دنیاازتون ممنونم
ببخشید میدونم پرروئیه ولی کد ورودی اکسل به دیتابیس و ندارید؟
من خیلی دنبالش گشتم اما پیدانکردم
اگرلطف کنید دراختیار منم قراربدید ازتون بی نهایت ممنونم

aspmaker
جمعه 19 خرداد 1391, 13:04 عصر
من اون قسمت از کد رو که مد نظزتون هست اینجوری نوشتم:

Response.AddHeader("content-disposition", "attachment; filename=Export.xls");

aspmaker
جمعه 19 خرداد 1391, 13:07 عصر
این هم کد کامل:


Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=Export.xls");
Response.ContentType = "application/ms-excel";
StringWriter sW = new StringWriter();
HtmlTextWriter myHtml = new HtmlTextWriter(sW);
HtmlForm myForm = new HtmlForm();
GridView1.Parent.Controls.Add(myForm);
myForm.Attributes["runat"] = "server";
myForm.Controls.Add(GridView1);
myForm.RenderControl(myHtml);
Response.Write(sW.ToString());
Response.End();

minaalamshahi
جمعه 19 خرداد 1391, 14:07 عصر
این y,m,d اسم چه فایلی هستند ؟


اینا رو من برای نام گدار ی استفاده کردم فرقی نمیکنه که y m d سال ماه روز هست در برنامه من

minaalamshahi
جمعه 19 خرداد 1391, 14:12 عصر
88022
من از یه روش دیگه استفاده کردم که توی این روش از
using Microsoft.Office.Interop.Excel; استفاده می کنم
اما وقتی روی پلسک میدارم خطا میده

asiehmohammadian
جمعه 19 خرداد 1391, 15:30 عصر
این هم کد کامل:


Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=Export.xls");
Response.ContentType = "application/ms-excel";
StringWriter sW = new StringWriter();
HtmlTextWriter myHtml = new HtmlTextWriter(sW);
HtmlForm myForm = new HtmlForm();
GridView1.Parent.Controls.Add(myForm);
myForm.Attributes["runat"] = "server";
myForm.Controls.Add(GridView1);
myForm.RenderControl(myHtml);
Response.Write(sW.ToString());
Response.End();
یک دنیا ازتون ممنونم
باورم نمیشه بالاخره تونستم کدشوگیر بیارم
خیلی خیلی خیلی ممنونم
شمانمیدونید کد ورودی اکسل و باید از کجا گیر بیارم؟
بی نهایت ممنونم

aspmaker
جمعه 19 خرداد 1391, 18:33 عصر
خواهش میکنم.
منظورتون از کد ورودی اکسل چیه؟؟

persian_bigboy
جمعه 19 خرداد 1391, 18:40 عصر
دوست من Unicode رو بررسی کن اگه میخوای 100% کارکنه باید از Utf8 به unicodeتغییر حالت بدی

asiehmohammadian
جمعه 19 خرداد 1391, 22:46 عصر
خواهش میکنم.
منظورتون از کد ورودی اکسل چیه؟؟

یعنی اطلاعات و از یک فایل اکسل به دیتابیس درج کنه
اگر اشتباه نکنم میشه inport to excel من توی سایتم قسمتی که فرم طراحی کردم که کاربر میخواد اطلاعات وارد کنه تادردیتابیس درج بشه یک دکمه گذاشتم به اسم ورودی اکسل که کاربر میتونه اطلاعاتشو ازقبل توی یک فایل اکسل (که چندین رکورد باهمه) درج کنه و همه رو باهم دردیتابیس درج کنه
اگرلطف کنیدراهنماییم کنید ممنون میشم

aspmaker
جمعه 19 خرداد 1391, 23:02 عصر
متاسفم دوست عزیز، در این مورد تجزبه ایی ندارم.
چون هیج وقت به کاربر اعتماد ندارم که داده ها رو درست وارد کنه واسه همین همیشه اطلاعات رو سعی میکنم با مدیریت خودم ازش بگیرم.

minaalamshahi
شنبه 20 خرداد 1391, 00:36 صبح
دوست من Unicode رو بررسی کن اگه میخوای 100% کارکنه باید از Utf8 به unicodeتغییر حالت بدی


میشه بیشتر برام توضیح بدین

hamkelasii
شنبه 20 خرداد 1391, 08:29 صبح
سلام . لطفا یکی بگه چطور فارسی رو هم اکسپورت کنیم ... من واقعا کارم گیره ...

elena2007
شنبه 20 خرداد 1391, 09:44 صبح
کسی نیست این مشکل قبلا داشته باشه و بتونه حل کنه؟؟؟
منم باید بتونم کلمات فارسی گرید رو به اکسل ببرم. لطفا یکی کمک کنه

elena2007
شنبه 20 خرداد 1391, 12:42 عصر
یعنی کسی اینجا نیست که کمکی بکنه؟

minaalamshahi
یک شنبه 21 خرداد 1391, 17:09 عصر
یافتم


System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentEnc oding = System.Text.Encoding.Default;


System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");


// Response.ContentType = "application/vnd.ms-excel";
string tab = "";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
Response.Write(tab + dc.ColumnName);
tab = "\t"; }
Response.Write("\n");
int i;
foreach (DataRow dr in ds.Tables[0].Rows)
{ tab = ""; for (i = 0; i < ds.Tables[0].Columns.Count; i++)
{ Response.Write(tab + dr[i].ToString()); tab = "\t"; }
Response.Write("\n"); } Response.End();

IFA_USER
یک شنبه 21 خرداد 1391, 19:56 عصر
با سلام
من می خوام اطلاعاتی رو که توی dataset پر کردم داخل یه فایل excel پر کنم اما روی قارسی مشکل داره کسی می دونه باید چه کنم؟
من از کد زیر استفاده می کنم

string attachment = "attachment; filename=Employee.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.ms-excel";






string tab = "";

foreach (DataColumn dc in ds.Tables[0].Columns)
{
Response.Write(tab + dc.ColumnName);
tab =




"\t";


}




Response.Write(



"\n");

int i;

foreach (DataRow dr in ds.Tables[0].Rows)
{
tab =




""; for (i = 0; i < ds.Tables[0].Columns.Count; i++)


{ Response.Write(tab + dr[i].ToString()); tab =



"\t"; }


Response.Write(



"\n");


} Response.End();

}






من تحت وب یه کد دارم درست کار می کنه


#region Excel/Word

strExtension = (strExportType.Trim() == "MicroSoftExcel" ? "xls" : "doc");

strData = @"
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
</head>
<body " + (strExportType.Trim() == "MicroSoftWord" ? "dir='rtl'" : "") + ">";

strData += "<table border='" + (strExportType.Trim() == "MicroSoftExcel" ? "0" : "1") + "'>";


if (chkHaveTitle.Checked == true)
{
#region Header
strData += "<tr>";
foreach (string title in arrSelectedFieldTitle)
{
strData += "<td>" + title + "</td>";
}
strData += "</tr>";

#endregion
}


#region Items

foreach (AccountDataAccess item in Query)
{
strData += "<tr>";
foreach (string fld in arrSelectedFieldValue)
{

strData += "<td>"; if (fld == "Des_Bank__Bank") { strData += item.Des_Bank__Bank; }
else if (fld == "Code_Account") { strData += item.Code_Account; }
else if (fld == "Branch_Account") { strData += item.Branch_Account; }
else if (fld == "OrgCode_Account") { strData += item.OrgCode_Account; }
else if (fld == "AccountNum_Account") { strData += item.AccountNum_Account; }
strData += "</td>";

}
strData += "</tr>";
}

#endregion


strData += "</table>";
strData += "</body>";
strData += "</html>";
#endregion
break;



}
Response.Clear();
Response.ContentType = "application/x-msdownload";
Response.AddHeader("Content-Disposition", "attachment;filename=Report." + strExtension);
Response.HeaderEncoding = System.Text.UTF8Encoding.UTF8;
Response.Write(strData);
Response.End();



چون فرصت نبود من کدم رو کپی پیست کردم یه جاهایی شو باید تغییر بدید. من با Linq نوشتم تغییر دادن اونجا ها کاری نداره
امیدوارم به دردتون بخوره

minaalamshahi
دوشنبه 22 خرداد 1391, 23:00 عصر
با تشکر
ولی یه مشکلی که بهش برخوردم هم در روش خودم هم در روش شما
نمایش
حرف ی هست که به صورت ؟ در excel برام من export میشه
دلیل این مسئله کجاست؟