public static void CreateExcel(Page page,DataTable mydt,string FileName) { HttpResponse resp; resp = page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); string colHeaders= "", ls_item=""; int i=0; //定义表对象与行对像,同时用DataSet对其值进行初始化 DataTable dt=mydt; DataRow[] myRow=dt.Select(""); //取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符 for(i=0;i<dt.Columns.Count-1;i++) { colHeaders +=dt.Columns[i].Caption.ToString()+"/t"; } colHeaders +=dt.Columns[i].Caption.ToString() +"/n"; //向HTTP输出流中写入取得的数据信息 resp.Write(colHeaders); //逐行处理数据 foreach(DataRow row in myRow) { //在当前行中,逐列获得数据,数据之间以/t分割,结束时加回车符/n for(i=0;i<dt.Columns.Count-1;i++) { ls_item +=row[i].ToString() + "/t"; } ls_item += row[i].ToString() +"/n"; //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 resp.Write(ls_item); ls_item=""; } //写缓冲区中的数据到HTTP头文件中 resp.End(); }
如果在导出的数据中含有纯数字的时候,有可能会按科学计算法的形式来显示,可以加上样式style="vnd.ms-excel.numberformat:@"
就可以避免按科学计算法来显示。