刚才好从winform中的datagrid中的数据导出到excel中了,可以出现了一个大问题:身份证这个字段在
EXCEL中却成了数字,还是以科学记数法形式显示的,请高人指点一下,怎么解决这个问题啊,在线等!急!!!!!

解决方案 »

  1.   

    DataGrid1_ItemDataBound
    {
      e.Item.Cells[列].Attributes.Add("style","vnd.ms-excel.numberformat:@");}
      

  2.   

    当字符型的数字串导出到excel的时候,经常自动变为科学记数法表示,解决的方法,绑定到DataGrid的时候在DataGrid的ItemDataBound事件中加上“vnd.ms-excel.numberformat:@”的Style 如下例子:
    以下是代码片段: private void grdReport_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
      {
       if(e.Item.ItemType == ListItemType|| e.Item.ItemType == ListItemType.AlternatingItem) 
       {      //转换为字符
        e.Item.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@"); 
        //日期
        e.Item.Cells[1].Attributes.Add("style","vnd.ms-excel.numberformat:yyyy/m/d"); 
       }  } 
      

  3.   

    偶说的是在winform中,你说的是在webform中的!再来
      

  4.   

    看错了winform好像没有这个事件,呵呵
    不过这个是改格式的
      

  5.   

    在EXCEL中改不回来了啊。郁闷,自己顶下。
      

  6.   

    DataGrid1_ItemDataBound
    {
      e.Item.Cells[列].inner.text="'"+e.Item.Cells[列].text;
    }
      

  7.   

    再次声明:我要求是在winform中啊,请大家看清问题!
      

  8.   

    Excel.Range  range  =  (Excel.Range)worksheet.Cells[1,1];
    //设置单元格数字内容显示格式
    range.NumberFormat  =  Excel.XlParameterDataType.xlParamTypeUnknown;
      

  9.   

    楼上的,身份证的问题解决了,但是还有个转换不过来,类似这样的"00001234",到EXCEL中就是1234
      

  10.   

    range.NumberFormat = "00000000";
      

  11.   

    我这个零不是固定的啊,难道就没有一个直接让原来的是文本格式到EXCEL中还是文本格式的解决方法吗?
      

  12.   

    应该是这个了 Range.NumberFormat = "@"; 
    详细看
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=792620&SiteID=1
      

  13.   

    Excel.Range format;
                for (int r = 0; r < ds.Tables[0].Rows.Count; r++)
                {
                    for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                    {
                        if (i == 0 || i == 1)
                        {
                            format = (Excel.Range)worksheet.Cells[r + 2, i + 1];
                            format.NumberFormatLocal = "@";
                        } 
                        worksheet.Cells[r + 2, i + 1] = ds.Tables[0].Rows[r][i];
                    }
                    rowRead++;
                    percent = ((float)(100 * rowRead)) / totalCount;
                }这是我的代码,format.NumberFormatLocal = "@";是关键
      

  14.   

    http://www.eimhe.com/bbs/adget.php?id=379765美河学习在线——专业视频课程下载基地
      

  15.   

    我好久没用WinForm了,
    只接分
      

  16.   

    Excel 中以“文本”记数法形式显示应该可以
      

  17.   

    hhxkss(0o超级毛毛虫o0)
    jasonduan007(幽谷清水) 
    以上两个人的答案是正解!在此表示感谢!