我主要的目的就是身份证号码 在导出excel之后 它仍然还是科学记数法的样式 要在excel里面设置才能正确 我的代码如下 请高手指导如何让身份证正确显示 
[align=center] public void WriteToExcel()
        {            try
            {
                if (this.dataGridView1.Rows.Count < 1)
                { return; }
                Microsoft.Office.Interop.Excel.ApplicationClass my = new   Microsoft.Office.Interop.Excel.ApplicationClass();
                my.Visible = true;   //显示EXCEL 
                Microsoft.Office.Interop.Excel.Workbook mybook = (Microsoft.Office.Interop.Excel.Workbook)my.Workbooks.Add(1);
                ((Microsoft.Office.Interop.Excel.Worksheet)mybook.Worksheets[1]).Name = "表1 ";
                Microsoft.Office.Interop.Excel.Worksheet mysheet = (Microsoft.Office.Interop.Excel.Worksheet)mybook.Worksheets[1];                mysheet.Cells.NumberFormat = "@";     //   20070520                   for (int j = 0; j < this.dataGridView1.Columns.Count - 1; j++)
                {
                    if (this.dataGridView1.Columns[j].Visible == true)
                    {
                        mysheet.Cells[1, j + 1] = "'" + Convert.ToString(this.dataGridView1.Columns[j].HeaderText);//加"'"防止科 学计数法
                    }
                }
                //导出数据
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    for (int j = 0; j < this.dataGridView1.Columns.Count - 1; j++)
                    {
                        mysheet.Cells[i + 2, j + 1] = "'" + Convert.ToString(this.dataGridView1.Rows[i].Cells[j].Value);
                    }
                }
                //mybook.Save(); 
                mybook = null;
                System.Runtime.InteropServices.Marshal.ReleaseComObject(my);
                my = null;
                GC.Collect();            }
            catch (Exception ex)
            {
                throw ex;
            }
        }[/align]

解决方案 »

  1.   

    设置单元格格式
    或使用'
    mySheet.Cells(1,9).NumberFormatLocal = "@"  
    Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[1,3]);  
    r.NumberFormat = "@";  
    r.NumberForma = "0.00_ "  
      

  2.   

    问题已经解决 其实代码是没错的 四楼的代码 道理和我写的代码是一样 
    我们主要还是忽略了一个问题 就是 导出excel的时候 同时要设置Datagridview 上面 columns的 type属性里面的 formate 属性 只要把那个属性设置为 "" 空字符串 然后系统自己就把它识别为“####”这样的格式 就达到了 身份证在导出到excel以后 是以字符串的形式显示的 
      

  3.   

     private bool ExportDataGridView(DataGridView dgv, bool isShowExcel)
            {
                if (dgv.Rows.Count == 0)
                    return false;
                Excel.Application excel = new Excel.Application();
                excel.Application.Workbooks.Add(true);
                excel.Visible = isShowExcel;
                //生成字段名
                for (int i = 0; i < dgv.ColumnCount; i++)
                {
                    excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
                }
                //填充数据
                for (int i = 0; i < dgv.RowCount; i++)
                {
                    for (int j = 0; j < dgv.ColumnCount; j++)
                    {
                        if (dgv[j, i].ValueType == typeof(string))
                        {
                            excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
                        }
                        else
                        {
                            if (dgv[j, i].ValueType == typeof(DateTime))
                            {
                                if (dgv[j, i].Value.ToString().Length == 16)
                                    excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString().Substring(0, 9);
                                if (dgv[j, i].Value.ToString().Length > 16)
                                    excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString().Substring(0, 10);
                            }
                            else
                                excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
                        }
                    }
                }
                return true;
            }        private void button6_Click_1(object sender, EventArgs e)
            {
                ExportDataGridView(dataGridView3, true);
            }