PDA

View Full Version : صدور فایل اکسل



masud8002k
جمعه 09 تیر 1391, 12:03 عصر
سلام
من تو سایتم خبر نامه دارم کاربر ایملشو میزنه در دیتا بیسم ذخیره میشه و در پنل مدیریت میبینم
حالا چطوری میتونم یک دگمه بزنم کل ایمیل های موجود رو در سایتم به صورت اکسل صادر کنه و در کامپیوترم دخیره کنم؟؟؟

hamid_kha
جمعه 09 تیر 1391, 12:47 عصر
دوست عزیز شما از کنتزل GridView استفاده کن
و در قسمت تنظیماتش خاصیت Export to excel رو فعال کن
کنترلهای telerik رو بهت پیشنهاد میکنم استفاده کنی که کار باهاش ساده تر است

masud8002k
جمعه 09 تیر 1391, 18:47 عصر
دوست عزیز شما از کنتزل GridView استفاده کن
و در قسمت تنظیماتش خاصیت Export to excel رو فعال کن
کنترلهای telerik رو بهت پیشنهاد میکنم استفاده کنی که کار باهاش ساده تر است
ببخشید export to excelرو از کجا فعال کنم؟ندیدم در گزینه هاش

mehrzad_ali
جمعه 09 تیر 1391, 23:46 عصر
خروجی اکسل


protected void btnExel_Click(object sender, EventArgs e)
{

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.Columns.RemoveAt(0);
GridView1.AllowPaging = false;
GridView1.DataBind();

//تغییر رنگ زمینه Header به سفید
// GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");


for (int w = 0; w < GridView1.Columns.Count; w++)
{
GridView1.HeaderRow.Cells[w].Style.Add("background-color", "green");


//دادن رنگ به سلول ها
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
row.BackColor = System.Drawing.Color.White;
row.Attributes.Add("class", "textmode");
if (i % 2 != 0)
{
row.Cells[w].Style.Add("background-color", "#C2D69B");

}
}
}
GridView1.RenderControl(hw);
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}

mehrzad_ali
جمعه 09 تیر 1391, 23:47 عصر
خروجی WORD


protected void btnWord_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.doc");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-word ";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.Columns.RemoveAt(0);
GridView1.AllowPaging = false;
GridView1.DataBind();
GridView1.RenderControl(hw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();

}

mehrzad_ali
جمعه 09 تیر 1391, 23:48 عصر
این تابع رو هم توی پیج بزارین



public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for the specified ASP.NET server control at run time.
}

masud8002k
شنبه 10 تیر 1391, 09:16 صبح
دوست عزیز ممنون فقط یه سوال فایل اکسل رو دانلود میکنه اما توش داده نیست این کد هست
@"<style> .textmode { mso-number-format:\@; } </style>
باید چیکار کنم اطلاعات گرید ویو1 را نشون بده؟

mehrzad_ali
شنبه 10 تیر 1391, 12:21 عصر
این کد رو از توی فرم لود بردارید درست میشه


if (!IsPostBack)
{

}

masud8002k
شنبه 10 تیر 1391, 17:00 عصر
اینم گذاشتم اما فرقی نکرد همون کد ها رو داخل اکس نشون میده؟

mehrzad_ali
شنبه 10 تیر 1391, 18:43 عصر
این کد رو بردارید از توی فرم لود

NOSRATGOLAB
دوشنبه 06 شهریور 1391, 19:37 عصر
ببخشید برای خروجی به صورت اکسل باید حتما ادیتور تلریک باشه ؟ چون من ویزوال استدیو 2008 کار میکنم و تلریک تو 2010 ه

mehrzad_ali
دوشنبه 06 شهریور 1391, 19:40 عصر
نه نباید تلریک باشه

NOSRATGOLAB
پنج شنبه 30 شهریور 1391, 16:04 عصر
ببخشید با سلام این کدی که نوشتین اگر روی دکمه کلیک بشه فایل اکسل تولید میشه ولی من که نمیتونم دکمه بزارم چون باید برنامه خودش در یک تایم مشخص اطلاعاتو از گرید ویو یا جدول در دیتابیس بریزه تو یه فایل اکسل بعد اون فایلو ایمیل کنه. یعنی برنامه باید یه جوری نوشته شده خودش خودکار این کارا رو کنه. الان به این صورت کد ش چه جوری باید بنویسم؟:گریه:
ممنون
خواهش می کنم کمک کنید

saeed_sho
پنج شنبه 30 شهریور 1391, 17:37 عصر
خروجی اکسل


protected void btnExel_Click(object sender, EventArgs e)
{

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.Columns.RemoveAt(0);
GridView1.AllowPaging = false;
GridView1.DataBind();

//تغییر رنگ زمینه Header به سفید
// GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");


for (int w = 0; w < GridView1.Columns.Count; w++)
{
GridView1.HeaderRow.Cells[w].Style.Add("background-color", "green");


//دادن رنگ به سلول ها
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
row.BackColor = System.Drawing.Color.White;
row.Attributes.Add("class", "textmode");
if (i % 2 != 0)
{
row.Cells[w].Style.Add("background-color", "#C2D69B");

}
}
}
GridView1.RenderControl(hw);
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}

میخوام خروجی از دیتابیس بگیرم بدون استفاده از گریدویو اول اطلاعات رو میریزم در دیتاتیبل بعد دیتاتیبل رو خروجی میگیرم کدهام تقریبا شبیه ماله شماست اما داخل فایل خروجی در هر ردیف دیگه سلول بندی نمیکنه و همه رو پشت سر هم مینویسه میشه لطفا کد برای خروجی دادن دیتاتیبل و بدون گرید رو بزارید

saeed_sho
جمعه 31 شهریور 1391, 11:16 صبح
این کدو زدم خروجیش خیلی نامرتبه
Private Sub ExportToSpreadsheet(ByVal dt As DataTable, ByVal name As String)
Dim context As HttpContext = HttpContext.Current
context.Response.Clear()
context.Response.ContentType = "text/csv"
context.Response.AddHeader("Content-Disposition", "attachment; filename=" & name & ".csv")

For Each column As DataColumn In dt.Columns
context.Response.Write(column.ColumnName & ";")
Next

context.Response.Write(Environment.NewLine)

For Each row As DataRow In dt.Rows
For i As Integer = 0 To dt.Columns.Count
context.Response.Write(row(i).ToString().Replace(";", String.Empty) & ";")
Next
context.Response.Write(Environment.NewLine)
Next

context.Response.End()
End Sub
لطفا راهنمایی کنید

saeed_sho
جمعه 31 شهریور 1391, 11:54 صبح
کدهارو اینجوری تغییر دادم چرا توی خروجی تگ های html داره میخوام سلول بندی بشه
Private Sub ExportToSpreadsheet2(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 & ".csv")
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()
End Sub
لطفا راهنمایی کنید

saeed_sho
جمعه 31 شهریور 1391, 12:17 عصر
مشکل حل شد دلیلش این بود که پسوند فایلو .csv گذاشته بودم که تغییرش دادم به .xls
Response.AddHeader("Content-Disposition", "attachment; filename=" & name & ".xls")

zahrashoja
دوشنبه 09 اردیبهشت 1392, 12:13 عصر
خروجی اکسل


protected void btnExel_Click(object sender, EventArgs e)
{

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.Columns.RemoveAt(0);
GridView1.AllowPaging = false;
GridView1.DataBind();

//تغییر رنگ زمینه Header به سفید
// GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");


for (int w = 0; w < GridView1.Columns.Count; w++)
{
GridView1.HeaderRow.Cells[w].Style.Add("background-color", "green");


//دادن رنگ به سلول ها
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
row.BackColor = System.Drawing.Color.White;
row.Attributes.Add("class", "textmode");
if (i % 2 != 0)
{
row.Cells[w].Style.Add("background-color", "#C2D69B");

}
}
}
GridView1.RenderControl(hw);
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}


وقتی فایل رو باز میکنم خطا میده که فایل خرابه و در فرمت نادرستیه..چه کارش کنم؟

_elhfarzan
چهارشنبه 31 اردیبهشت 1393, 17:00 عصر
یه فرم کامل رو چطور میشه خروجی گرفت ازش!!!