比如我的DataGrid有一列是学号,当值是0开头的时候,写到excel里面就变成2010101了,就是前面的0就没有了,我怎么让excel保持这个0啊?就是把DataGrid的数据一成不变的放到excel上
源代码:
HttpResponse resp=Page.Response;
resp.Clear();
resp.Charset="";
resp.ContentType="application/vnd.ms-excel";
resp.AppendHeader("Content-Disposition", "attachment;filename=excel.xls");
StringWriter sw=new StringWriter();
HtmlTextWriter htw=new HtmlTextWriter(sw);
this.dgHead.RenderControl(htw);
resp.Write(sw);
resp.End();
还有我发现DataGrid的颜色页码什么的都会带到excel里面,能否去掉?
用比较原始的方法
1. 首先,产生一个文件夹来存放Excel文件
private string genReportPath()
{
try
{
string _path="..//ReportDoc//DRI";
if (!Directory.Exists(Server.MapPath(_path)))
{
Directory.CreateDirectory(Server.MapPath(_path));
}
return _path;
}
catch(Exception er)
{
throw er;
}
}
2.确定Excel文件
string reportpath=this.genReportPath()+"//"+_reportname+".xls";
3.生成Excel文件
this.genExcel(ds_DRI,Server.MapPath(reportpath).ToString());
4.生成函数
private void genExcel(DataSet ds,string ReportPath)
{
try
{
//删除重复的文件;
if (File.Exists(ReportPath))
{
File.Delete(ReportPath);
}
FileStream fsobj=new FileStream(ReportPath,System.IO.FileMode.Create,FileAccess.ReadWrite);
//生成一个文件流
StreamWrite _sw=new StreamWriter(fsobj,System.Text.UnicodeEncoding.Unicode);//生成一个写入器
//开始写入
DataTable dt=ds.Tables[0];
for(int j=0;j<countMRD;j++)
{
_sw.Write(dt.Rows[j][0].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][1].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][2].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][3].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][4].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][5].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][6].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][7].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][8].ToString().Trim()+"\t");
_sw.Write(dt.Rows[j][9].ToString().Trim()+"\t");
}
_sw.close();
fsobj.close();
}
catch(Exception er)
{
throw er;
}
这中方法比较灵活哦,想怎么写就怎么写,呵呵
改成这样就可以了
HttpResponse resp=Page.Response;
resp.Clear();
resp.Charset="";
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.ContentType="application/vnd.ms-excel";
resp.AppendHeader("Content-Disposition", "attachment;filename=BankRecord.xls");
int colNum=this.dgHead.Columns.Count;
for(int i=0;i<colNum;i++)
{
sw+=this.dgHead.Columns[i].HeaderText+Convert.ToChar(9);
}
sw+="\r\n";
resp.Write(sw);
sw="";
foreach(DataGridItem dgi in this.dgHead.Items)
{
for(int i=0;i<colNum;i++)
{
sw+=dgi.Cells[i].Text+Convert.ToChar(9);
}
sw+="\r\n";
resp.Write(sw);
sw="";
}
resp.End();