PDA

View Full Version : Export کردن دیتا گرید ویو در اکسل



a.maleki
سه شنبه 30 فروردین 1390, 10:24 صبح
با عرض سلام و وقت بخیر
لطفا این پست را پاک نکنید
به خدا کلی کد زیر رو کردم ولی جواب نگرفتم
من از این کد برای خروجی استفاده می کنم ولی پیغام خطا میده لطفا دوستان کمک کننند بدجور گیرم
ممنون

کدم

Response.Clear();

Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", fileName));
Response.Charset = "";

Response.ContentType = "application/vnd.xls";

StringWriter stringWrite = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

grdGridView.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.Flush();
Response.End();



پیغام خطای که میده


Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server.


تو ور خدا یکی کمک کنه:عصبانی++::عصبانی++::عصبان ++:

mehrdad85
سه شنبه 30 فروردین 1390, 11:38 صبح
با سلام

کدتو به این صورت اصلاح کن
احتمال 98% درست میشه البته امیدوارم



try
{response.clear();
response.addheader("contenet-disposition",attachment;filename="filename.xls");
response.contenetType="application/vnd.ms-excel";
response.ContenetEncoding=system.text.encoding.uni code;
response.binarywrite(system.text.encoding.unicode. preamble());
this.enableviewstate=false;
StringWrite sr=new StringWriter();
htmltextwriter hr=new htmltextwriter(sr);
gridviewId.rendercontrol(hr);
response.write(sr.tostring());
sr.dispose();
hr.dispose();
response.end();
}
catch(Exception ex)
{
}
موفق باشی

a.maleki
سه شنبه 30 فروردین 1390, 12:38 عصر
از لطفتون ممنونم ولی متاسفانه جواب نداد و من مشکلم همچنان پا برجاست
دوستان لطف کنند کمک کنند

mehrdad85
سه شنبه 30 فروردین 1390, 14:28 عصر
سلام
دوست خوبم من اشتباه و بد نوشتم
عذر خواهی میکنم
کد بالا را برات منظم مینویسم امتحان کن من از این کد استفاده میکنم و مشکلی هم با هاش ندارم
راستی یه سوال
شما name space اضافه میکنید؟
من یادم رفت بهتون یادآوری کنم
خلاصه عرض کنم این تاپیک را یه بار دقیق اجرا کن ان شاالله جواب میگیری
اول این name space ها را اضافه کن :

using System.web.UI.HtmlControl;
using System.Text;
using System.IO;
حالا کد زیر را در button_click دکمه مورد نظر بنویس:

try
{
Response.clear();
Response.AddHeader("contenet-disposition",attachment;filename="fileName.xls");
Response.ContenetType="application/vnd.ms-excel";
Response.ContenetEncoding=System.t=Text.Encoding.U nicode;
Response.Binarywrite(System.Text.Encoding.Unicode. GetPreamble());
this.EnableViewState=false;
StringWrite sr=new StringWriter();
HtmlTextWriter hr=new HtmlTextWriter(sr);
GridviewId.RenderControl(hr);
Response.write(sr.tostring());
sr.Dispose();
hr.Dispose();
Response.End();
}
catch(Exception ex)
{
}
public override void VerifyRenderingInServerForm(Control control)
{
}

موفق باشی

a.maleki
سه شنبه 30 فروردین 1390, 15:25 عصر
دوست عزیز به این خط ایراد میگیره


Response.AddHeader("contenet-disposition",attachment;filename="fileName.xls");

میگه attachment وجود ندارد

mehrdad85
سه شنبه 30 فروردین 1390, 15:54 عصر
دوست عزیز به این خط ایراد میگیره


Response.AddHeader("contenet-disposition",attachment;filename="fileName.xls");

میگه attachment وجود ندارد

سلام

کافیه که اونو به این شکل بنویسی

Response.AddHeader("contenet-disposition","attachment;filename=fileName.xls");
من واقعا عذر خواهی میکنم
ببخشید من سرم شلوغ بود کد را تست نکردم فقط دستی برات تایپ کردم واسه همین پر از غلط سینتکسی هستش
شرمنده

a.maleki
سه شنبه 30 فروردین 1390, 16:04 عصر
به خدا من شرمنده شما هستم نمیدونم این کد چشه که همش ایراد میگیره
الان به این خط این ایراد رو میگیره


GridView1.RenderControl(hr);




RegisterForEventValidation can only be called during Render();


آقا به فرمی که درش از مسترپیج استفاده شده باشه حساس یعنی گیر میده یا نه براش فرقی نداره؟؟؟
کد شما کاملا درسه چون من تو یه فرمی که از مسترپیج درش استفاده نمیشه نوشتم و کاملا درست کار کرد ولی تو فرمی که مسترپیج داره ایراد میگیره
اگر کاری باید انجام بدم ممنون میشم که کمک کنید

yakooza2009
سه شنبه 30 فروردین 1390, 16:38 عصر
اگر توی گرید ویو از دکمه های Edit یا حذف یا هر کنترلی استفاده کردی خصوصیت ویزیبلشون و false کن

mehrdad85
سه شنبه 30 فروردین 1390, 17:35 عصر
C


آقا به فرمی که درش از مسترپیج استفاده شده باشه حساس یعنی گیر میده یا نه براش فرقی نداره؟؟؟
کد شما کاملا درسه چون من تو یه فرمی که از مسترپیج درش استفاده نمیشه نوشتم و کاملا درست کار کرد ولی تو فرمی که مسترپیج داره ایراد میگیره
اگر کاری باید انجام بدم ممنون میشم که کمک کنید

سلام
من از این کد داخل یک فرم با masterpage استفاده کردم ولی مشکلی پیش نیومد و داخل grid هم از کنترل link استفاده کردم و visible هم هست و بدون مشکل کار میکنه
نمیدونم مشکل از کجاست
سعی میکنم برات پیدا کنم راه حلشو
غصشو نخور

mehrdad85
سه شنبه 30 فروردین 1390, 17:41 عصر
سلام
نگفتم غصه نخور
این کد را تست کن

<%@PageLanguage="C#"AutoEventWireup="true"Debug="true"EnableEventValidation="false"CodeFile="Default.aspx.cs"Inherits="_Default" %>

مشکل از EnableEventValidation هست واسه این که مطمئن بشی که کار میکنه یک بار اونو true کن اگه نشد false کن
در یکی از این شرایط باید جواب بده

منو از نتیجه کارت بی خبر نذار

موفق باشی

aserfg
چهارشنبه 31 فروردین 1390, 11:14 صبح
سلام دوست عزیز نمونه کد زیر تست و بدون مشکل اجرا شد :

public override void VerifyRenderingInServerForm(Control control)
{
}

private void ExportToExcel(string strFileName, GridView dg)
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
dg.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}


protected void Button1_Click(object sender, EventArgs e)
{
ExportToExcel("Report.xls", GridView1);


}

monire.6767
پنج شنبه 26 اردیبهشت 1392, 11:28 صبح
سلام ببخشید من ازین کد استفاده کردم و کار کرد ولی خروجی اکسلش دوخط پایین تر میوفته و همچنین اولش موقع باز شدن این پیغامو میده کسی میدونه چطور میتونم رفعش کنم؟104256104257