C#中datagridview导出Excel将身份证号设置为文本格式,而不是科学计数法格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中datagridview导出Excel将身份证号设置为文本格式,而不是科学计数法格式相关的知识,希望对你有一定的参考价值。
这是对比图片。//源代码 public void ExportDataGridViewToExcel(DataGridView dataGridview1) //利用Stream(流)的方式 SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true; saveFileDialog.Title = "导出Excel文件到"; DateTime now = DateTime.Now; saveFileDialog.FileName = now.Year.ToString().PadLeft(2) + now.Month.ToString().PadLeft(2, '0') + now.Day.ToString().PadLeft(2, '0') + "-" + now.Hour.ToString().PadLeft(2, '0') + now.Minute.ToString().PadLeft(2, '0') + now.Second.ToString().PadLeft(2, '0'); saveFileDialog.ShowDialog(); Stream myStream; myStream = saveFileDialog.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312")); string str = ""; try //写标题 for (int i = 0; i < dataGridview1.ColumnCount; i++) if (i > 0) str += "\t"; str += dataGridview1.Columns[i].HeaderText; sw.WriteLine(str); //写内容 for (int j = 0; j < dataGridview1.Rows.Count; j++) string tempStr = ""; for (int k = 0; k < dataGridview1.Columns.Count; k++) if (k > 0) tempStr += "\t"; tempStr += dataGridview1.Rows[j].Cells[k].Value.ToString(); sw.WriteLine(tempStr); sw.Close(); myStream.Close(); MessageBox.Show("成功导出Excel"); catch (Exception e) MessageBox.Show(e.ToString()); finally sw.Close(); myStream.Close();
参考技术A 在身份证的数字开头前加个单引号(')就行了。 参考技术B if(id.length>15)s="'"+s;
return s; 参考技术C 这个问题比较具体。
C#导入导出excel的问题
是winform下的,有导入和导出功能
导出是使用了流的方式将datagridview中的信息导出到execl中
而在导入时就有问题了
一.如果使用OleDb连接的方式导入execl数据的话,
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + ";" + "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;\"";
1.读取用流方式生成的excel会失败
2.获取工作薄表名时也有问题
System.Data.DataTable sTable =
conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = sTable.Rows[0]["TABLE_NAME"].ToString().Trim();
这样获取的表名不一定是第一个工作薄的名字,而且在打开和关闭execl文件的情况下,获取到的表名也不一样
二.如果使用Excel.dll库读取
用户安装的excel版本不定的,所以无法确定引用的Microsoft.Office.Interop.Excel.dll版本,而且会不会出现无法读取用流导出的execl文件这种情况也不知道
要怎么弄,才能导入用流生成的execl文件,而且不受execl版本的影响
public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties=Excel 5.0;";
string strExcel = string.Format("select * from [0$]", strSheetName);
DataSet ds = new DataSet();
using (OleDbConnection conn = new OleDbConnection(strConn))
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
conn.Close();
return ds.Tables[strSheetName];
//导出EXCLE的代码
protected void ExcleOut(DataSet ds)
Response.Write("<div style='font-size:25px; font-weight:bold;text-align:center'>XXXX</div>");
DataGrid dg = new DataGrid();
Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToShortDateString() + ".xls");
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.Default;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel";
dg.DataSource = ds;
dg.DataBind();
// dg.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
dg.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
///很久以前做的了。忘了一些东西,假如不清楚的话可以百度 清清月儿 博客里面有很多C#的东西都很实用 参考技术B public override void VerifyRenderingInServerForm(Control control)
//注释掉下面的代码,否则在asp.net2.0下会报错(注:GridView是asp.net2.0下的控件,1.1下一些控件也可以导出成Excel或者Word)
// base.VerifyRenderingInServerForm(control);
protected void Button1_Click(object sender, EventArgs e)
//导出按钮的事件 ,你只管套用,没有你写得那么复杂
Response.Clear();
Response.BufferOutput = true;
//设定输出的字符集
Response.Charset = "GB2312";
//假定导出的文件名为FileName.xls
Response.AppendHeader("Content-Disposition", "attachment;filename=AnyDate_Tongji.xls"); //你的表名
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
//设置导出文件的格式
Response.ContentType = "application/ms-excel";
//关闭ViewState
EnableViewState = false;
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter stringWriter = new System.IO.StringWriter(cultureInfo);
System.Web.UI.HtmlTextWriter textWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
this.GridView1.RenderControl(textWriter);
//把HTML写回浏览器
Response.Write(stringWriter.ToString());
Response.End();
那么简单的问题 有什么疑问晚上联系我给你解决 参考技术C 最好导出格式为csv的,wps也能够支持 参考技术D 楼主 要的话我给你发个例子过去追问
好啊,我的邮箱是swg2008.happy@163.com
我试试,看看能不能解决,先谢谢了
发过去了 你看看 记得采纳啊
本回答被提问者采纳以上是关于C#中datagridview导出Excel将身份证号设置为文本格式,而不是科学计数法格式的主要内容,如果未能解决你的问题,请参考以下文章
如何将datagridview导出到Open Office Excel c#
Visual Studio 2010 C#,winform,如何将dataGridview的数据导出到Excel表中?
c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据
C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel