Excel导入导出时数据类型转换问题!!!! 本帖最后由 maxch1225 于 2009-12-31 10:18:47 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接改 使用INT函数啊=INT(A1) 假定您的原数值在A1! 谢谢上面两位!在程序中有办法解决吗!?就是保存在excel中的直接就是数字。 这个我在excel中设置后,导入之后还是那个样!还是以文本的形式保存的!帮忙啊!高手们! 怎样导出成为excel表??嘻嘻 如果你是使用ADO的方式,应该是没办法. 不会吧 我导出的都是数字都是以数字保存的 一些文本形式的数字串也是以数字保存的下面是导出到excel的代码 private void ExportToExcel(string filename) { string str = DateTime.Today.Year.ToString() + DateTime.Today.Month.ToString(); string s_filename = str +filename+ ".xls"; Response.Clear(); Response.Buffer = true; Response.AppendHeader("Content-Disposition", "attachment;filename=" + s_filename); Response.ContentEncoding = System.Text.Encoding.Default;//设置输出流为简体中文 Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 this.EnableViewState = false; System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true); System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); this.GridView1.RenderControl(oHtmlTextWriter); //Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7"); //Response.Charset = "GB2312"; Response.Write(oStringWriter.ToString()); Response.End(); } public override void VerifyRenderingInServerForm(Control control) { //base.VerifyRenderingInServerForm(control); } 这个很简单!网上也有很多!strComm = "insert into [Sheet1$] (数量,单价,总价) values ('" + TabXu.Rows[i][16].ToString() + "','" + TabXu.Rows[i][17].ToString() + "','" + TabXu.Rows[i][18].ToString() + "')";string strConn = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + _fileName + ";Extended Properties=Excel 8.0;"; OleDbConnection oleConn = new OleDbConnection(strConn); OleDbDataAdapter oleAdap = new OleDbDataAdapter(strComm, oleConn); DataSet ds = new DataSet(); oleConn.Open(); oleAdap.Fill(ds, "ExcelData"); oleConn.Close();各位也帮我看看吧!这是把数据添加到excel表中的!我把数量,和单价都转成int型再添加也是不行的!!!实在不知怎么办了!!! 正好做完,请参考--EXCEL输出类型:1) 文本:vnd.ms-excel.numberformat:@ 2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd 3) 数字:vnd.ms-excel.numberformat:#,##0.00 4) 货币:vnd.ms-excel.numberformat:¥#,##0.00 vd;k;5) 百分比:vnd.ms-excel.numberformat: #0.00%具体调用(在GridView的RowDataBound事件中写): protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //你要绑定的数据类型的列 e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); // 你要绑定的日期类型的列 e.Row.Cells[2].Attributes.Add("style", "vnd.ms-excel.numberformat:yyyy/mm/dd hh:mm:ss"); // 以此类推... } } 从Excel读取出来之后,然后按照你想要的转换啊。转换为数据库类型,然后添加到数据库不就行了嘛 呵呵,不用谢。随便提个醒,GRID中有日期或时间类型的数据导出时也要注意一下:如果不设置类型的话,输出的文件中日期和时间类型可能显示不全或格式错误所以采用在数据绑定的事件中绑定每一列需要的输出类型的方法,这样开发的时候比较灵活,先试试看哪种更方便^_^。 你在导入EXCEL文件时有列类型可选择的,可以对每一列进行选择 string strComm = "insert into [Sheet1$] (数量,单价) values ('12','25')"; string strConn = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + _fileName + ";Extended Properties=Excel 8.0;"; OleDbConnection oleConn = new OleDbConnection(strConn); OleDbDataAdapter oleAdap = new OleDbDataAdapter(strComm, oleConn); DataSet ds = new DataSet(); oleConn.Open(); oleAdap.Fill(ds, "ExcelData"); oleConn.Close();//这是将数据导入excel 12和25 在excel中是以文本保存的!!string strConn = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + _fileName + ";Extended Properties=Excel 8.0;"; string olestr = "select * from [Sheet1$]"; DataSet ds = DBOperate.FillDataSet(olestr, DBOperate.DriverType.OleDb, strConn);//这个ds是再把excel查询的结果问题是怎么转啊!! http://blog.csdn.net/jackson627/archive/2009/12/24/5070318.aspx给你借鉴一下 谢谢楼上的!我这是winform程序! 没用过这种导出Excel方式,不过大体上应该机理是一样的,只要你导向Excel的数据类型是Int的,那么在Excel中显示的就是数字类型的。看了下楼主的代码,大概是因为你将它转化成字符了,所以导出后显示的也就是文字格式的了。只是根据楼主给的代码的猜测,不知是否能够解决问题。 如果数据库里该字段设定的是Int型的,可以直接读出来就行了,如果是char或者别的类型的,在读取SQL文里转化一下就行了。 恩,仔细看了下,好像没涉及到数据库,抱歉==!你将这个代码strComm="insert into [Sheet1$] (数量,单价) values ('12','25')改成strComm="insert into [Sheet1$] (数量,单价) values (12,25)试试。不知道可不可以直接用数字型的。。 http://www.mscto.com/C__Net/27559003.html看看这个。 有没有搞错,你是数字型的,为什么还要加引号啊,明摆着插入字符型的啊!看看这句话。+ "','" + TabXu.Rows[i][17].ToString() + "','" + TabXu.Rows[i][18].ToString() + "')"; insert into [Sheet1$] (数量,单价) values (12,25)\\就OK了,只有字符型才加引号。 C#中十六进制相加问题 C# 字符串强制转换为整型 .net的运行时,有多个版本,1.1,2.0,3.0这几个版本能兼容码?是不是机器上要同时装几个版本呀? 菜鸟看不懂的关于split的用法 DEV gridcontrol控件 显示转化问题 Java学了是不是学C#要容易些? 关于第三方控件的问题。 用c#怎么吧数据导入Excel 中 WPF如何获取屏幕的分辨率,就是如何获取屏幕的高度和宽度 集思广益,有关毕业设计,请大家讨论一下。 c# 如何用WebClient实现网页登陆? C# wince5.0智能设备程序怎么实现自定义消息啊?
在程序中有办法解决吗!?
就是保存在excel中的直接就是数字。
下面是导出到excel的代码
private void ExportToExcel(string filename)
{
string str = DateTime.Today.Year.ToString() + DateTime.Today.Month.ToString();
string s_filename = str +filename+ ".xls";
Response.Clear();
Response.Buffer = true;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + s_filename);
Response.ContentEncoding = System.Text.Encoding.Default;//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter);
//Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7");
//Response.Charset = "GB2312";
Response.Write(oStringWriter.ToString());
Response.End(); } public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
string strConn = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + _fileName + ";Extended Properties=Excel 8.0;";
OleDbConnection oleConn = new OleDbConnection(strConn);
OleDbDataAdapter oleAdap = new OleDbDataAdapter(strComm, oleConn);
DataSet ds = new DataSet();
oleConn.Open();
oleAdap.Fill(ds, "ExcelData");
oleConn.Close();各位也帮我看看吧!
这是把数据添加到excel表中的!
我把数量,和单价都转成int型再添加也是不行的!!!
实在不知怎么办了!!!
EXCEL输出类型:
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 数字:vnd.ms-excel.numberformat:#,##0.00
4) 货币:vnd.ms-excel.numberformat:¥#,##0.00 vd;k;
5) 百分比:vnd.ms-excel.numberformat: #0.00%具体调用(在GridView的RowDataBound事件中写): protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//你要绑定的数据类型的列
e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
// 你要绑定的日期类型的列
e.Row.Cells[2].Attributes.Add("style", "vnd.ms-excel.numberformat:yyyy/mm/dd hh:mm:ss");
// 以此类推...
}
}
随便提个醒,GRID中有日期或时间类型的数据导出时也要注意一下:如果不设置类型的话,输出的文件中日期和时间类型可能显示不全或格式错误所以采用在数据绑定的事件中绑定每一列需要的输出类型的方法,这样开发的时候比较灵活,先试试看哪种更方便^_^。
string strComm = "insert into [Sheet1$] (数量,单价) values ('12','25')";
string strConn = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + _fileName + ";Extended Properties=Excel 8.0;";
OleDbConnection oleConn = new OleDbConnection(strConn);
OleDbDataAdapter oleAdap = new OleDbDataAdapter(strComm, oleConn);
DataSet ds = new DataSet();
oleConn.Open();
oleAdap.Fill(ds, "ExcelData");
oleConn.Close();
//这是将数据导入excel 12和25 在excel中是以文本保存的!!string strConn = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + _fileName + ";Extended Properties=Excel 8.0;";
string olestr = "select * from [Sheet1$]";
DataSet ds = DBOperate.FillDataSet(olestr, DBOperate.DriverType.OleDb, strConn);
//这个ds是再把excel查询的结果问题是怎么转啊!!
给你借鉴一下
你将这个代码
strComm="insert into [Sheet1$] (数量,单价) values ('12','25')
改成
strComm="insert into [Sheet1$] (数量,单价) values (12,25)
试试。
不知道可不可以直接用数字型的。。
看看这个。
看看这句话。+ "','" + TabXu.Rows[i][17].ToString() + "','" + TabXu.Rows[i][18].ToString() + "')";
\\就OK了,只有字符型才加引号。