如果在excel中前面加“'”,的确可以通过,但是数据量大太麻烦,所以请各位给个更好的办法!
39 个解决方案
#1
SELECT cast(cast([小数字段] as float) as char)
FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=你的excel.xls',[sheet1$])
FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=你的excel.xls',[sheet1$])
#2
我估计你用excel打开这个文件看到的也是科学计数法显示的,excel单元格的值好像有两种,一种是
显示值,一种是单元本身的值,如果使用Excel.dll实例化excel对象来操作的话,好像可以访问这两个值的任意一个。
显示值,一种是单元本身的值,如果使用Excel.dll实例化excel对象来操作的话,好像可以访问这两个值的任意一个。
#3
我用Excel打开是正常的,
to xrascal(横刀夺爱)
你的我先试一下
to xrascal(横刀夺爱)
你的我先试一下
#4
to xrascal(横刀夺爱)
你的这个现在怎么执行呀?说细点
我原先是这样做的
string strConn;
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\item.xls;Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
你的这个现在怎么执行呀?说细点
我原先是这样做的
string strConn;
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\item.xls;Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
#5
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
改成:
string strSql = "SELECT cast(cast([小数字段] as float) as char) FROM [Sheet2$]";
OleDbDataAdapter myCommand = new OleDbDataAdapter( strSql,strConn);
我的意思是你在 SQL 语句里把你的那个小数的字段 cast 一下。
改成:
string strSql = "SELECT cast(cast([小数字段] as float) as char) FROM [Sheet2$]";
OleDbDataAdapter myCommand = new OleDbDataAdapter( strSql,strConn);
我的意思是你在 SQL 语句里把你的那个小数的字段 cast 一下。
#6
那怎么获取sheet2的字段呢?
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
IDataReader reader = myCommand.ExecuteReader();
DataTable schemaTable = reader.GetSchemaTable();
reader.Close();
这样可以吗?
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
IDataReader reader = myCommand.ExecuteReader();
DataTable schemaTable = reader.GetSchemaTable();
reader.Close();
这样可以吗?
#7
up
#8
我已经构造了,但是Fill进Dataset里面时有错
#9
to xrascal(横刀夺爱)
错误是:IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
cmd的CommandText 是
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,cast(cast(单价 as float) as varchar),cast(cast(重量比例因子 as float) as varchar),申报计量单位,cast(cast(申报计量单位比例因子 as float) as varchar),海关HS商品编码,法定第一计量单位,法定第二计量单位,cast(cast(法定第一计量单位比例因子 as float) as varchar),cast(cast(法定第二计量单位比例因子 as float) as varchar),ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
看看错误在哪呀?
错误是:IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
cmd的CommandText 是
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,cast(cast(单价 as float) as varchar),cast(cast(重量比例因子 as float) as varchar),申报计量单位,cast(cast(申报计量单位比例因子 as float) as varchar),海关HS商品编码,法定第一计量单位,法定第二计量单位,cast(cast(法定第一计量单位比例因子 as float) as varchar),cast(cast(法定第二计量单位比例因子 as float) as varchar),ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
看看错误在哪呀?
#10
我也看不出错误在哪里,你把 cast 这些转换挨个去掉,检测一下是不是 cast 转换出错的缘故。
#11
是的,去掉cast就没错,加上就错了,不知道为什么
#12
用了cast就不行,各位,还有没有其他办法呀
#13
cast 转换出错的话,原因应该是你的有些数据不是数值型的。
#14
可是我的都是数值型的哟,
对于字段类型本身是decimal的,我现在这样处理了,
double mmm = Convert.ToDouble(line);//line即为科学计数发表示的值
decimal aaa = Convert.ToDecimal(mmm);
很奇怪转换成double可以,但是转换成decimal不行,没办法,中转了一下。
但是对于那些字段类型是字符串的,就比较难办了,还请大家帮忙!
对于字段类型本身是decimal的,我现在这样处理了,
double mmm = Convert.ToDouble(line);//line即为科学计数发表示的值
decimal aaa = Convert.ToDecimal(mmm);
很奇怪转换成double可以,但是转换成decimal不行,没办法,中转了一下。
但是对于那些字段类型是字符串的,就比较难办了,还请大家帮忙!
#15
你建立一个只有一行的 excel 文件测试一下?
#16
我给你测试了一下,应该改成这样:
如你的小数字段为 [num]
则 select convert(dec(10,6) ,[num])) as 小数 from [sheet2$]
如你的小数字段为 [num]
则 select convert(dec(10,6) ,[num])) as 小数 from [sheet2$]
#17
但是对于海关编码列,字段类型为varchar,Excel中值是85322200,格式是文本,读到的是8.53222e+007,
对于这样的列改怎么处理呢?
对于这样的列改怎么处理呢?
#18
一样的用格式转换,这次应该转换成 bitint
#19
我怎么提示convert函数没有定义呀,
#20
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,cast(cast(单价 as float) as varchar),cast(cast(重量比例因子 as float) as varchar),申报计量单位,cast(cast(申报计量单位比例因子 as float) as varchar),海关HS商品编码,法定第一计量单位,法定第二计量单位,cast(cast(法定第一计量单位比例因子 as float) as varchar),cast(cast(法定第二计量单位比例因子 as float) as varchar),ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
#21
你说该怎么写吧,写一个例子,我这边总是有错,先谢谢啦
#22
cast(cast([海关编码列] as bigint)
#23
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,单价 ,重量比例因子 ,申报计量单位,申报计量单位比例因子,cast(cast([海关编码列] as bigint) as varchar) as 海关HS商品编码 ,法定第一计量单位,法定第二计量单位,法定第一计量单位比例因子,法定第二计量单位比例因子 ,ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
老大,我这样写,错误还是一样哟,看看有什么错误
老大,我这样写,错误还是一样哟,看看有什么错误
#24
SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,单价 ,重量比例因子 ,申报计量单位,申报计量单位比例因子,cast(cast([海关HS商品编码] as bigint) as varchar) as 海关HS商品编码 ,法定第一计量单位,法定第二计量单位,法定第一计量单位比例因子,法定第二计量单位比例因子 ,ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]
是这样写的!还是错!
是这样写的!还是错!
#25
convert(dec(20,0),[海关编码列]) as 海关编码列
这样试试
这样试试
#26
多谢哟,你好早,我去试试
#27
错误提示:
表达式中 'convert' 函数未定义
这样吧,你帮我个忙,我把excel文件发给你,你帮我试试怎么可以读的不是科学计数法就行,只要能解决,我可以另外开帖给分,你回答这么久,也够辛苦的了,先多谢罗!告诉我email吧
表达式中 'convert' 函数未定义
这样吧,你帮我个忙,我把excel文件发给你,你帮我试试怎么可以读的不是科学计数法就行,只要能解决,我可以另外开帖给分,你回答这么久,也够辛苦的了,先多谢罗!告诉我email吧
#28
你发到 xrascal@163.com 好了。
不辛苦不辛苦,我这两天是一心想换工作,没心上班。在csdn上瞎逛呢。
不辛苦不辛苦,我这两天是一心想换工作,没心上班。在csdn上瞎逛呢。
#29
喔,可以聊聊哟,qq:9117345
#30
收到没有呀,163邮箱好像有问题,不知道发出去没有
#31
没收到。。。
#32
有没有其他的呀,163好像收不到哟,我也是用163的发的,发不出去
#33
xrascal@hotmail.com
#34
发出去了,看看
#35
还是收不到
#36
hotmail的发出去两次了,163的发不出去,看看
#37
我就在 msn 上呢,没看到收到信呀。不会是 hotmail 把它当垃圾邮件,阻塞掉了吧?
163.com 的可以发信呀。我今天都用 163 的发了 n 封 email了
163.com 的可以发信呀。我今天都用 163 的发了 n 封 email了
#38
是吧,那我登陆网站上去发好了,用个outExpress发了半天都不行
#39
to: xrascal(横刀夺爱) ( )
到这个帖去接分,没人跟帖,给你啦!
http://community.csdn.net/Expert/topic/3401/3401417.xml?temp=.6778986
到这个帖去接分,没人跟帖,给你啦!
http://community.csdn.net/Expert/topic/3401/3401417.xml?temp=.6778986
#1
SELECT cast(cast([小数字段] as float) as char)
FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=你的excel.xls',[sheet1$])
FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=你的excel.xls',[sheet1$])
#2
我估计你用excel打开这个文件看到的也是科学计数法显示的,excel单元格的值好像有两种,一种是
显示值,一种是单元本身的值,如果使用Excel.dll实例化excel对象来操作的话,好像可以访问这两个值的任意一个。
显示值,一种是单元本身的值,如果使用Excel.dll实例化excel对象来操作的话,好像可以访问这两个值的任意一个。
#3
我用Excel打开是正常的,
to xrascal(横刀夺爱)
你的我先试一下
to xrascal(横刀夺爱)
你的我先试一下
#4
to xrascal(横刀夺爱)
你的这个现在怎么执行呀?说细点
我原先是这样做的
string strConn;
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\item.xls;Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
你的这个现在怎么执行呀?说细点
我原先是这样做的
string strConn;
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\item.xls;Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
#5
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
改成:
string strSql = "SELECT cast(cast([小数字段] as float) as char) FROM [Sheet2$]";
OleDbDataAdapter myCommand = new OleDbDataAdapter( strSql,strConn);
我的意思是你在 SQL 语句里把你的那个小数的字段 cast 一下。
改成:
string strSql = "SELECT cast(cast([小数字段] as float) as char) FROM [Sheet2$]";
OleDbDataAdapter myCommand = new OleDbDataAdapter( strSql,strConn);
我的意思是你在 SQL 语句里把你的那个小数的字段 cast 一下。
#6
那怎么获取sheet2的字段呢?
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
IDataReader reader = myCommand.ExecuteReader();
DataTable schemaTable = reader.GetSchemaTable();
reader.Close();
这样可以吗?
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet2$]",strConn);
IDataReader reader = myCommand.ExecuteReader();
DataTable schemaTable = reader.GetSchemaTable();
reader.Close();
这样可以吗?
#7
up
#8
我已经构造了,但是Fill进Dataset里面时有错
#9
to xrascal(横刀夺爱)
错误是:IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
cmd的CommandText 是
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,cast(cast(单价 as float) as varchar),cast(cast(重量比例因子 as float) as varchar),申报计量单位,cast(cast(申报计量单位比例因子 as float) as varchar),海关HS商品编码,法定第一计量单位,法定第二计量单位,cast(cast(法定第一计量单位比例因子 as float) as varchar),cast(cast(法定第二计量单位比例因子 as float) as varchar),ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
看看错误在哪呀?
错误是:IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
cmd的CommandText 是
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,cast(cast(单价 as float) as varchar),cast(cast(重量比例因子 as float) as varchar),申报计量单位,cast(cast(申报计量单位比例因子 as float) as varchar),海关HS商品编码,法定第一计量单位,法定第二计量单位,cast(cast(法定第一计量单位比例因子 as float) as varchar),cast(cast(法定第二计量单位比例因子 as float) as varchar),ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
看看错误在哪呀?
#10
我也看不出错误在哪里,你把 cast 这些转换挨个去掉,检测一下是不是 cast 转换出错的缘故。
#11
是的,去掉cast就没错,加上就错了,不知道为什么
#12
用了cast就不行,各位,还有没有其他办法呀
#13
cast 转换出错的话,原因应该是你的有些数据不是数值型的。
#14
可是我的都是数值型的哟,
对于字段类型本身是decimal的,我现在这样处理了,
double mmm = Convert.ToDouble(line);//line即为科学计数发表示的值
decimal aaa = Convert.ToDecimal(mmm);
很奇怪转换成double可以,但是转换成decimal不行,没办法,中转了一下。
但是对于那些字段类型是字符串的,就比较难办了,还请大家帮忙!
对于字段类型本身是decimal的,我现在这样处理了,
double mmm = Convert.ToDouble(line);//line即为科学计数发表示的值
decimal aaa = Convert.ToDecimal(mmm);
很奇怪转换成double可以,但是转换成decimal不行,没办法,中转了一下。
但是对于那些字段类型是字符串的,就比较难办了,还请大家帮忙!
#15
你建立一个只有一行的 excel 文件测试一下?
#16
我给你测试了一下,应该改成这样:
如你的小数字段为 [num]
则 select convert(dec(10,6) ,[num])) as 小数 from [sheet2$]
如你的小数字段为 [num]
则 select convert(dec(10,6) ,[num])) as 小数 from [sheet2$]
#17
但是对于海关编码列,字段类型为varchar,Excel中值是85322200,格式是文本,读到的是8.53222e+007,
对于这样的列改怎么处理呢?
对于这样的列改怎么处理呢?
#18
一样的用格式转换,这次应该转换成 bitint
#19
我怎么提示convert函数没有定义呀,
#20
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,cast(cast(单价 as float) as varchar),cast(cast(重量比例因子 as float) as varchar),申报计量单位,cast(cast(申报计量单位比例因子 as float) as varchar),海关HS商品编码,法定第一计量单位,法定第二计量单位,cast(cast(法定第一计量单位比例因子 as float) as varchar),cast(cast(法定第二计量单位比例因子 as float) as varchar),ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
#21
你说该怎么写吧,写一个例子,我这边总是有错,先谢谢啦
#22
cast(cast([海关编码列] as bigint)
#23
"SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,单价 ,重量比例因子 ,申报计量单位,申报计量单位比例因子,cast(cast([海关编码列] as bigint) as varchar) as 海关HS商品编码 ,法定第一计量单位,法定第二计量单位,法定第一计量单位比例因子,法定第二计量单位比例因子 ,ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]"
老大,我这样写,错误还是一样哟,看看有什么错误
老大,我这样写,错误还是一样哟,看看有什么错误
#24
SELECT 内部货号,货品类型,料件类型,成品备案类型,商品名称,英文名称,商品规格型号,英文规格型号,ERP计量单位,ERP币制,单价 ,重量比例因子 ,申报计量单位,申报计量单位比例因子,cast(cast([海关HS商品编码] as bigint) as varchar) as 海关HS商品编码 ,法定第一计量单位,法定第二计量单位,法定第一计量单位比例因子,法定第二计量单位比例因子 ,ERP产销国地,归并后料件序号,归并后成品序号,备注 FROM [Sheet2$]
是这样写的!还是错!
是这样写的!还是错!
#25
convert(dec(20,0),[海关编码列]) as 海关编码列
这样试试
这样试试
#26
多谢哟,你好早,我去试试
#27
错误提示:
表达式中 'convert' 函数未定义
这样吧,你帮我个忙,我把excel文件发给你,你帮我试试怎么可以读的不是科学计数法就行,只要能解决,我可以另外开帖给分,你回答这么久,也够辛苦的了,先多谢罗!告诉我email吧
表达式中 'convert' 函数未定义
这样吧,你帮我个忙,我把excel文件发给你,你帮我试试怎么可以读的不是科学计数法就行,只要能解决,我可以另外开帖给分,你回答这么久,也够辛苦的了,先多谢罗!告诉我email吧
#28
你发到 xrascal@163.com 好了。
不辛苦不辛苦,我这两天是一心想换工作,没心上班。在csdn上瞎逛呢。
不辛苦不辛苦,我这两天是一心想换工作,没心上班。在csdn上瞎逛呢。
#29
喔,可以聊聊哟,qq:9117345
#30
收到没有呀,163邮箱好像有问题,不知道发出去没有
#31
没收到。。。
#32
有没有其他的呀,163好像收不到哟,我也是用163的发的,发不出去
#33
xrascal@hotmail.com
#34
发出去了,看看
#35
还是收不到
#36
hotmail的发出去两次了,163的发不出去,看看
#37
我就在 msn 上呢,没看到收到信呀。不会是 hotmail 把它当垃圾邮件,阻塞掉了吧?
163.com 的可以发信呀。我今天都用 163 的发了 n 封 email了
163.com 的可以发信呀。我今天都用 163 的发了 n 封 email了
#38
是吧,那我登陆网站上去发好了,用个outExpress发了半天都不行
#39
to: xrascal(横刀夺爱) ( )
到这个帖去接分,没人跟帖,给你啦!
http://community.csdn.net/Expert/topic/3401/3401417.xml?temp=.6778986
到这个帖去接分,没人跟帖,给你啦!
http://community.csdn.net/Expert/topic/3401/3401417.xml?temp=.6778986