سلام
من از مقاله شما به لینک https://barnamenevisan.org/Articles/Article5038.html استفاه کردم و پیغام
System.InvalidOperationException: 'Both DataSource and DataSourceID are defined on 'GridView1'. Remove one definition.'
رو به من داد و من datasource را از صفحه .aspx پاک کردم و اجرا کردم و دکمه خروجی فایل اکسل رو زدم فایل اکسل رو دانلود کرد اما فرمتش رو نخواند و حجم فایل هم 1kb بیشتر نبود
و اگر بخوام از طریق dataTableAdaptor و تابع getdata() دیتاست استفاده کنم از همین رویه استفاده کنم
سپاس
من نمونه موجود در مقاله رو بررسی کردم و مشکلی نداشت
احتمالا جایی در پیاده سازی اشتباه کردید
من کد زیر هم تست کردم اما وقتی دانلود میشه و با اکسل بازش می کنم فرمت فابل رو ایراد میگیره ( Microsoft Excel cannot open files of this type )
private DataTable GetData(SqlCommand cmd) { DataTable dt = new DataTable(); //String strConnString = System.Configuration.ConfigurationManager. // ConnectionStrings["sa"].ConnectionString; SqlConnection con = new SqlConnection("Data Source=DataSql;Initial Catalog=TestExpImp;Integrated Security=True"); SqlDataAdapter sda = new SqlDataAdapter(); cmd.CommandType = CommandType.Text; cmd.Connection = con; try { con.Open(); sda.SelectCommand = cmd; sda.Fill(dt); return dt; } catch (Exception ex) { throw ex; } finally { con.Close(); sda.Dispose(); con.Dispose(); } } protected void Button1_Click(object sender, EventArgs e) { //Get the data from database into datatable string strQuery = "select IdUser, Name, LastName from UserTbl"; SqlCommand cmd = new SqlCommand(strQuery); DataTable dt = GetData(cmd); //Create a dummy GridView GridView GridView1 = new GridView(); GridView1.Attributes.Add("runat", "server"); GridView1.AllowPaging = false; GridView1.DataSource = dt; GridView1.DataBind(); Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=DataTable.xls"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); for (int i = 0; i < GridView1.Rows.Count; i++) { //Apply text style to each Row GridView1.Rows[i].Attributes.Add("class", "textmode"); } GridView1.RenderControl(hw); //style to format numbers to string string style = @"<style> .textmode { mso-number-format:\@; } </style>"; Response.Write(style); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); }
ورژن اکسل شما شاید مشکل داره
در یک سیستم دیگه تست کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)