我主要的目的就是身份证号码 在导出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]
[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]
或使用'
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_ "
我们主要还是忽略了一个问题 就是 导出excel的时候 同时要设置Datagridview 上面 columns的 type属性里面的 formate 属性 只要把那个属性设置为 "" 空字符串 然后系统自己就把它识别为“####”这样的格式 就达到了 身份证在导出到excel以后 是以字符串的形式显示的
{
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);
}