解决AspNet中DataGrid GridView等列表控件导出Excel长数字显示成科学计数法的问题
大家都知道,在Excel中,当一个单元格中的值为一长串数字,而且该单元格又不是文本格式的时候,这一长串数字会以科学计数法的方式显示,这给我们的阅读带来了障碍。如果是直接在Excel中编辑数据,手动将格式改为“文本”即可,但要是用程序导出的Excel,手动去改就显得很麻烦了。简单的方法就是在程序中导出Excel的时候就设置列为“文本”格式。
AspNet中将DataGrid,GridView等列表控件导出Excel的代码通常如下:
1 2 3 4 5 6
| DataSet ds = GetData(); this.GridView1.DataSource = ds; GridView1.DataBind();
//导出Excel的方法 Export(GridView1, "mayfile.xls", "application/ms-excel");
|
现在只需在调用导出Excel方法前对GridView中的列进行设置即可,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| DataSet ds = GetData(); this.GridView1.DataSource = ds; GridView1.DataBind();
for (int i = 0; i < GridView1.Rows.Count; i++) { for (int j = 0; j < GridView1.Columns.Count; j++) { GridView1.Rows[i].Cells[j].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); } }
//导出Excel的方法 Export(GridView1, "mayfile.xls", "application/ms-excel");
|
上面的代码是将GridView中所有的列都设置成了文本格式,你也可以根据需要对指定的几列进行设置。