C# asp.net GridView控件导出Excel后,1-1显示1月1日

Excel1-1显示1月1日


最近做WebForm发现一个问题,从GridView导出Excel之后,1-1的数据会默认变成1月1日,后来我在查询的时候写sql的时候添加了单引号,写成这样

`('''' + X.CASE_NO) AS CASE_NO`
但是这样查询后,导出Excel就会显示这个单引号
经过几次查询之后,找到了解决办法
GridView绑定数据之后,将那一列数据属性进行修改,代码如下:
for (int i = 0; i < GridView1.Rows.Count; i++)
{
	GridView1.Rows[i].Cells[19].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//将GridView1.Rows[i].Cells[19]修改为自己的列的索引
}

最后附上三个方法的代码

导出按钮方法:

protected void btnexcel_Click(object sender, EventArgs e)
{
	GridView1.AllowPaging = false;//设置不可分页
	this.GridView1.AllowSorting = false;//设置不可排序
	Packed_Data();//重新绑定数据(不可缺少)
	DownloadDataGridView(GridView1, "Packing_Data.xls");//导出Excel方法
	GridView1.AllowPaging = true;//设置可分页
	this.GridView1.AllowSorting = true;//设置可以排序
}

绑定数据方法(设置属性的代码在这个方法中)

 protected void Packed_Data()
 {
 	using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["DSN"]))
 	{
 		con.Open();
 		try
 		{
 			string strQuery1 = "SELECT * FROM TB";//查询sql
 			DataSet myds1 = Common.dataSet(strQuery1);
 			GridView1.DataSource = myds1.Tables[0];
 			GridView1.DataBind();//先绑定数据
 			#region 添加的代码
 			for (int i = 0; i < GridView1.Rows.Count; i++)
 			{
 				GridView1.Rows[i].Cells[19].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//设置单元格属性
 			}
 			#endregion
 			if (myds1 == null || myds1.Tables.Count == 0 || myds1.Tables[0].Rows.Count == 0)
 			{
 				this.Page.ClientScript.RegisterStartupScript(this.GetType(), "AlertMessage", "<script language=\"javascript\" type=\"text/javascript\">alert('抱歉,未找到符合查询条件的数据');</script>");
 				ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "click", "alert('抱歉,未找到符合查询条件的数据')", true);
 			}
 		}
 		catch (Exception ex)
 		{
 			Funciton.printError(ex);
        }
        finally
        {
            if (con.State == ConnectionState.Open)
            {
            	con.Close();
            }//end if
        }//end finally
    }//end using
}

导出Excel方法

public void DownloadDataGridView(GridView dgv, string FileName)
{
	Response.Charset = "GB2312";
	Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
	string style = @"<style> .text { mso-number-format:\@; } </script> ";
	Response.ClearContent();
	Response.AddHeader("content-disposition", "attachment; filename=" + FileName);
	Response.ContentType = "application/excel";
	StringWriter sw = new StringWriter();
	HtmlTextWriter htw = new HtmlTextWriter(sw);
	this.GridView1.RenderControl(htw);//请修改为自己的GridView名称
	Response.Write(style);
	Response.Write(sw.ToString());
	Response.End();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值