Excel导入数据的存储过程出错, 怎么办?
存储过程如下:
create procedure p_importExcel
@tableName varchar(200), --表名
@tableFieldList varchar(2000), --表字段列表
@excelPath varchar(2000), --excel文件的全路径,包括路径和文件名
@sheetName varchar(200), --工作表名
@excelFieldList varchar(2000) --excel工作表的字段列表
as
declare @sql varchar(8000)
set @sql='insert into '+@tableName+'('+@tableFieldList+') '
+' select '+@excelFieldList
+' from openrowset(''Microsoft.Jet.OLEDB.4.0'',''Excel 8.0;Database='+@excelPath+';HDR=yes;IMEX=1;'','
+' ''select '+@excelFieldList+' from ['+@sheetName+'$]'')'
print(@sql)
exec(@sql)
return
错误: 它将Excel中的纯字符串(如手机号 12345687895),导入数据库后,错误地转换为科学计数法(如 1.23456e+010). 我不想让它转换.
补充:急急急!!!!!!!!!!
回复2L: 将设置单元格格式设置为文本,然后输入是可以的, 但要导入的Excel是不可能一个单元一个单元的重新输入. 即使将Excel的单元格全设置为文本(而不重新输入)也一样会出错. 大概是Microsoft.Jet.OLEDB进行了错误的转换. 如果将手机号写为012345687895(注意多加了一个0)就不会错误转换. 用什么参数或函数限定Microsoft.Jet.OLEDB转换呢? 能不能讲讲openrowset函数provide_string的所有参数及其用法.
回复3L: 我就是不知如何转换, 才问的. 帮写出来吧
答案:你试试在你想要输入数字的单元格里点击右键,选择‘设置单元格格式’不要用常规,用文本就可以了 必须先改用文本在输入数字
其他:再来一遍 select '+@excelFieldList
在这里对字段进行转换,以适应表里字段定义
上一个:access 怎样打开和关闭Excel 文件
下一个:在协同工作中07Access用什么可以把它导入Excel中,excel和Access同时更新