DataTable 导出Excel 身份证如何处理问题?

屌丝女士111 2010-04-01 08:59:46
 public void CreateExcel(DataTable dt, string typeid, string fileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("content-disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls\"");

string colHeaders = "";
string lsItem = "";
int i = 0;
//定义表对象与行对像,同时用DataSet对其值进行初始化
DataRow[] myRow = dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if (typeid == "1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for (i = 0; i < dt.Columns.Count; i++)
{
colHeaders += dt.Columns[i].Caption + "\t";
//向HTTP输出流中写入取得的数据信息
}
colHeaders += "\n";
resp.Write(colHeaders);
//逐行处理数据
foreach (DataRow row in myRow)
{

//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.Table.Columns.Count; i++)
{
lsItem += row[i] + "\t";

}
lsItem += "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(lsItem);
lsItem = "";
}
}
else
{
if (typeid == "2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
//resp.Write(dt.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
//xSt.get_Range(excel.Cells[7, 7], excel.Cells[8, 8]).Interior.ColorIndex = 20;//设置背景色为浅黄色,共计有56种
resp.End();
}
...全文
450 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
火星大能猫 2010-04-01
  • 打赏
  • 举报
回复
那就用myxls控件来导出
或者调用office的com组件.
直接response导出的xls文件其实就是txt文件.
tashiwoweiyi 2010-04-01
  • 打赏
  • 举报
回复
那是你用Excel打开时,所出现的科学计算法。

不是数据的问题。。

你只要选中身份证这一列,右键【设置单元格格式】-然后选择【数值】-界面有个【小数位数】设置为0就OK了。
屌丝女士111 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wukaiping870123 的回复:]
输出身份证的行添加style
e.Row.Attributes.Add("style", "vnd.ms-excel.numberformat:@");
[/Quote]

这种办法只能用到Gridview导出的时候可以处理的!!!
火星大能猫 2010-04-01
  • 打赏
  • 举报
回复
输出身份证的行添加style
e.Row.Attributes.Add("style", "vnd.ms-excel.numberformat:@");
屌丝女士111 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 teerhu 的回复:]
//逐行处理数据
foreach (DataRow row in myRow)
{

//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.Table.Columns.Count; i++)
{
lsItem +="'"+ row[i] + "\t";

}
lsItem += "\n";
//当前行数据写入HTTP输出……
[/Quote]

你好 虽然是解决了这个问题 但是导出来的excel 每条数据都像这样有 ‘身份证

所以有更好的办法么? 呵呵
谢谢了
zw033 2010-04-01
  • 打赏
  • 举报
回复
顶~~~~~
凤凰涅檠 2010-04-01
  • 打赏
  • 举报
回复
vnd.ms-excel.numberformat:@
lovezhxf 2010-04-01
  • 打赏
  • 举报
回复
俺 也想知道,XML文件如何导出至excel.继续学习中。。。
mengxj85 2010-04-01
  • 打赏
  • 举报
回复
单引号+号码,就变成字符串了
teerhu 2010-04-01
  • 打赏
  • 举报
回复
//逐行处理数据
foreach (DataRow row in myRow)
{

//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.Table.Columns.Count; i++)
{
lsItem +="'"+ row[i] + "\t";

}
lsItem += "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(lsItem);
lsItem = "";
}
鲁虾 2010-04-01
  • 打赏
  • 举报
回复
看二楼的解决
anyqu 2010-04-01
  • 打赏
  • 举报
回复
笔误,导出时!
anyqu 2010-04-01
  • 打赏
  • 举报
回复
导入时在其前面加“'"就可以了!
屌丝女士111 2010-04-01
  • 打赏
  • 举报
回复
请问如何处理身份证 身份证导出后都是42654E+17 这样子的?
屌丝女士111 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wukaiping870123 的回复:]
那就用myxls控件来导出
或者调用office的com组件.
直接response导出的xls文件其实就是txt文件.
[/Quote]

哦 非常感谢你的回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧