用OPENROWSET把Excel导入数据表中时,数据出现了错误,我们导入时那一列有数值型的和字符型的,如果数值型的数据大于字符型的数据,导入到库中时字符弄数据就是NULL,反之,数值型数据就为空,是怎么回事?
解决方案 »
- 那位推荐一些入门的外国人写的delphi书籍。
- delphi调用c++的dll显示图片,有两给参数JPEG图片首地址、图片的长度
- 请教~~ 怎么提取另一个软件上的edit1上的text?
- 能不能在一张报表里做两个以上的分组报表?
- 提供网上有关Sybase system 11 资料者都有分哦!
- 在ORACLE数据库中,一个查询中如何返回单条记录?
- 数据库问题
- 怎么把字符串中的'号替换成‘号
- 请教:不连接其它数据库,我怎么在程序中自定义一个数据表 datatable,以存储二维数据?,且能绑定到dbgrid
- quickrep是不是有这样的问题?
- vclskin This is Older Skin File 自己的一点分析(有图)
- 利用adoquery导入access表
一、如我在D盘下有D:\物件编码.xls文件,有工作表名Sheet是中文命名为‘办公用品编码’,‘零件编码’。 select * into #temp from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\物件编码.xls')...[办公用品编码$] select * into #temp from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\物件编码.xls')...[零件编码$]二、如你的Excel文件是工作表是默认的Sheet命名为Sheet1,Sheet2等。 select * into #temp from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\物件编码.xls')...[Sheet1$] select * into #temp from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\物件编码.xls')...[Sheet2$]
三、引用 Limpire (昨夜小楼)以下方法,也行 OpenRowSet和OpenDataSource都能用读取用数字命名的Sheet,只不过要加单引号界定,其它不规则命名的Sheet也一样。 假设C:\Text.xls有个Sheet名字是“3”:
select * from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls')...['3$']
--OR
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls',['3$'])
--OR
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls','select * from [''3$'']')
--OpenRowSet(,,'query')可以不加单引号界定:
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls','select * from [3$]')
四、本人的方法:导出EXCEL时,对应字段数类型都要相同,EXCEL字段的名称stano,sname 和数据库的要一样,才能导出成功。反之一樣:insert into openrowset('MICROSOFT.JET.OLEDB.4.0','excel 8.0;
HDR=YES;database=D:\FName.xls',sheet1$)
select stano,sname from stainfo
SELECT
*
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:\更新文件\11.xls";User ID=Admin;Password=;Extended properties=''Excel 5.0;HDR=yes;IMEX=1''')...sheet1$加上 IMEX=1表示转为文本型。这样都可以导入。还一个办法就是,excel是根据这列的前八项来确定数据类型的,你只要把八行字符型的数据放在最前面就可以了。