您现在的位置是:首页 > .NET

.NET

.net导出Excel的处理方法(解决科学记数法的问题)

2020-11-08 15:09:20 .NET admin
之前在导出Excel的时候,总是会以科学记数法显示较大数字,甚至一些字符比如"10500E000054"也会被认为是数字而以科学记数法的方式显示,很是麻烦,网上搜索不少资料,终于解决,记录如下:第一种方法导出Excel,会产生科学记数法的问
之前在导出Excel的时候,总是会以科学记数法显示较大数字,甚至一些字符比如"10500E000054"也会被认为是数字而以科学记数法的方式显示,很是麻烦,网上搜索不少资料,终于解决,记录如下:

第一种方法导出Excel,会产生科学记数法的问题:
public void CreateExcel(DataTable dt, IList<KeyValuePair<string, string>> head, string FileType, string FileName)
{
Response.Clear();
Response.Charset="UTF-8";
Response.Buffer=true;
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("Content-Disposition","attachment;filename=\""+System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)+".xls\"");
Response.ContentType=FileType;

stringcolHeaders=string.Empty;

StringWritersw=newStringWriter();
foreach(KeyValuePair<string,string>kinhead)
{
if(dt.Columns.Contains(k.Key))
{
sw.Write(k.Value+"\t");
}
}
sw.Write(sw.NewLine);

stringls_item=string.Empty;
intcl=dt.Columns.Count;
foreach(DataRowrowindt.Rows)
{
foreach(KeyValuePair<string,string>kinhead)
{
if(dt.Columns.Contains(k.Key))
{
sw.Write(row[k.Key].ToString()+"\t");
}
}
sw.Write(sw.NewLine);
}
Response.OutPut.Flush();
Response.Write(sw);
Response.End();
}