Export(\学生成绩报表.xls\ }
private void Export(string FileType, string FileName) {
Response.Charset = \
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader(\HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); Response.ContentType = FileType; this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw); GridView1.RenderControl(hw); Response.Write(tw.ToString()); Response.End(); }
//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
public override void VerifyRenderingInServerForm(Control control) { }
还有由于是文件操作所以要引入名称空间IO和Text 后台代码: using System; using System.Data;
using System.Configuration; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; using System.Drawing; using System.IO; using System.Text;
public partial class Default7 : System.Web.UI.Page {
SqlConnection sqlcon;
SqlCommand sqlcom;
string strCon = \北风贸易;Uid=sa;Pwd=sa\ protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
bind(); } }
public void bind() {
string sqlstr = \飞狐工作室\ sqlcon = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open();
myda.Fill(myds, \飞狐工作室\ GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { \身份证号码\ GridView1.DataBind(); sqlcon.Close(); }
protected void Button1_Click(object sender, EventArgs e) {
Export(\学生成绩报表.xls\ }
private void Export(string FileType, string FileName) {
Response.Charset = \
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader(\HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); Response.ContentType = FileType; this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw); GridView1.RenderControl(hw);
Response.Write(tw.ToString()); Response.End(); }
public override void VerifyRenderingInServerForm(Control control) { } } 前台:
BackColor=\BorderStyle=\>
读取Excel数据的代码:这个很简单的 private DataSet CreateDataSource() { string strCon; strCon = \Server.MapPath(\ OleDbConnection olecon = new OleDbConnection(strCon); OleDbDataAdapter myda = new OleDbDataAdapter(\[Sheet1$]\ DataSet myds = new DataSet(); myda.Fill(myds); return myds; } protected void Button1_Click(object sender, EventArgs e) { GridView1.DataSource = CreateDataSource(); GridView1.DataBind(); } 如果GridView存在模板列,其中包含子控件,例如CheckBox等,导出EXCEL后就会出现该区域的不规律。所以要对模板列单独处理(转载) public static void PrepareGridViewForExport(Control gv)//模式化特殊元素 flashcong { LinkButton lb = new LinkButton(); Literal l = new Literal(); string name = String.Empty; for (int i = 0; i < gv.Controls.Count; i++) { if (gv.Controls[i].GetType() == typeof(LinkButton)) { l.Text = (gv.Controls[i] as LinkButton).Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(DropDownList)) { l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } { l.Text = (gv.Controls[i] e\ gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } { l.Text = \ gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } { PrepareGridViewForExport(gv.Controls[i]); } } } else if (gv.Controls[i].GetType() == typeof(CheckBox)) as CheckBox).Checked ? \else if (gv.Controls[i].GetType() == typeof(ImageButton)) 图片\ if (gv.Controls[i].HasControls())