前台:
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.controls.Table1.export1.test1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function textBoxDataSaveConfirm2(txt) {
var strValidRealPattern = /^[-]?\d+[.]?\d*$/;
if (strValidRealPattern.test(txt.value) == false) {
0
alert("请输入数字!");
txt.style.backgroundColor = "red"
txt.focus();
txt.value = 0;
//document.all.Label1.focus();
return false;
}
txt.style.backgroundColor = "AliceBlue";
return true;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:Table ID="Table1" runat="server">
</asp:Table>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click"
Text="导出EXCEL" />
</form>
</body>
</html>
后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebApplication1.common;
namespace WebApplication1.controls.Table1.export1
{
public partial class test1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
buildheader();
}
private void buildheader()
{
Table1.Rows.Clear();
Table1.Dispose();
TextBox tb = new TextBox();
TextBox tb2 = new TextBox();
for (int i = 0; i < 3; i++)
{
TableRow newrw = new TableRow();
newrw.ForeColor = System.Drawing.Color.Black;
newrw.BackColor = System.Drawing.Color.DeepSkyBlue;
newrw.Font.Bold = true;
for (int j = 0; j < 5; j++)
{
TableCell newcl = new TableCell();
newcl.BorderColor = System.Drawing.Color.Black;
newcl.BorderWidth = 1;
newcl.RowSpan = 1;
newcl.ColumnSpan = 1;
newcl.HorizontalAlign = HorizontalAlign.Left;
newcl.Text = "序号" + (i * 5 + j);
newcl.Attributes.Add("background", "../images/bottom_bg_blue.GIF");
#region 给单元格添加控件
tb = new TextBox();
tb.ID = "myTabCell" + (i * 5 + j).ToString();
tb.BorderWidth = 0;
tb.Width = Unit.Percentage(99);
tb.Text = "0";
tb.BackColor = System.Drawing.Color.AliceBlue;
tb.Attributes["onBlur"] = "textBoxDataSaveConfirm2(this)";
tb.Style.Add("text-align", "center");
tb2 = new TextBox();
tb2.ID = "TabCell" + (i * 5 + j).ToString();
tb2.BorderWidth = 0;
tb2.Width = Unit.Percentage(99);
tb2.Text = "0";
tb2.BackColor = System.Drawing.Color.AliceBlue;
tb2.Attributes["onBlur"] = "textBoxDataSaveConfirm2(this)";
tb2.Style.Add("text-align", "center");
#endregion
newcl.Controls.Add(tb);
newcl.Controls.Add(tb2);
newrw.Cells.Add(newcl);
Table1.Rows.Add(newrw);
}
}
manage_table.RepeatColumnMergeCell(Table1,0,0,5,manage_table.Get_cell_data(Table1,0,0));
manage_table.RepeatRowMergeCell(Table1, 1, 0, 2, manage_table.Get_cell_data(Table1, 1, 0));
}
protected void Button2_Click(object sender, EventArgs e)
{
buildheader();
manage_excel.renderExcel_Table(Table1,"ss");
}
//重载
public override void VerifyRenderingInServerForm(Control control)
{ }
}
}
类中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.IO;
using System.Web.UI;
using System.Text;
using System.Data;
namespace WebApplication1.common
{
public class manage_excel
{
//导出到excel
public static void renderExcel(GridView gv, string excelname)
{
gv.Visible = true;
HttpContext.Current.Response.ClearContent();
string filename = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(excelname)) + ".xls";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename);
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
HttpContext.Current.Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
gv.Visible = false;
}
//导出到excel,用Repeater
public static void renderExcel_Repeater(Repeater gv, string excelname)
{
gv.Visible = true;
HttpContext.Current.Response.ClearContent();
string filename = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(excelname)) + ".xls";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename);
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
HttpContext.Current.Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
gv.Visible = false;
}
//导出到excel,用Table
public static void renderExcel_Table(Table gv, string excelname)
{
gv.Visible = true;
HttpContext.Current.Response.ClearContent();
string filename = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(excelname)) + ".xls";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename);
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
HttpContext.Current.Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
gv.Visible = false;
}
public static void ToExcel(System.Web.UI.Control ctl, string FileName)
{
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
string filename = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(FileName)) + ".xls";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename);
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
/// <summary>
/// 把表中信息导出到EXCEL
/// </summary>
/// <param name="Dt">表名</param>
/// <param name="FileName">文件名</param>
public static void renderExcel_DataTable(DataTable Dt, string FileName)
{
System.Web.UI.WebControls.GridView dgExport = null;
//当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
//IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (Dt != null)
{
//设置编码和附件格式
//System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
curContext.Response.ContentType = "application nd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "GB2312";
//导出Excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
//为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView
dgExport = new System.Web.UI.WebControls.GridView();
dgExport.DataSource = Dt.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
//下载到客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
/// <summary>
///导出Repeater,table必须在Repeater里面
/// </summary>
/// <param name="rp"></param>
/// <param name="strFileName"></param>
public static void renderExcel_Repeater2(Repeater rp, string strFileName)
{
strFileName = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(strFileName)) + ".xls";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "gb2312";
HttpContext.Current.Response.AppendHeader("content-disposition", "attachment; filename=" + strFileName);
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
HttpContext.Current.Response.ContentType = "application/ms-excel";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("zh-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
rp.RenderControl(oHtmlTextWriter);
rp = null;
HttpContext.Current.Response.Write(oStringWriter.ToString().Replace("<td", "<td STYLE='MSO-NUMBER-FORMAT:\\@'"));
HttpContext.Current.Response.Buffer = false;
HttpContext.Current.Response.End();
}
}
}
