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();
}