现在总结一下:
环境: MS SQL SERVER 2000, OFFICE 2007(备注 office 2003没有问题)
目的:从sql server 2000 导出数据到EXCEL 2007(从 sql server 2000中查询 excel 2007,以及从 excel 2007导数据到ms sql server 2000都没有问题,
而且用openrowset可以实现sql server 2000 导出数据到EXCEL 2007,所以觉得有些人说的ms sql server 2000不支持 excel 2007说法有问题)
T_SQL语句如下:
use wmj
go
insert into opendatasource('microsoft.ace.12.0','excel 8.0;hdr=0;data source=E:\DATA\DISTRICT.XLSX')...[Sheet1$] select * from area
只可以导出第一行,报错如下:
服务器: 消息 7343,级别 16,状态 2,行 1
OLE DB 提供程序 'microsoft.ace.oledb.12.0' 未能 INSERT INTO 表 '[microsoft.ace.oledb.12.0]'。未知的提供程序错误。
[OLE/DB provider returned message: 书签无效。]
如果将参数设置为 imex=2则,没有任何数据可以导出,报错信息如下:
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'microsoft.ace.oledb.12.0' 报错。提供程序指出用户没有执行该操作的权限。
[OLE/DB provider returned message: 不能更新。数据库或对象为只读。]
希望高手帮帮忙啊
3 个解决方案
#1
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'microsoft.ace.oledb.12.0' 报错。提供程序指出用户没有执行该操作的权限。
[OLE/DB provider returned message: 不能更新。数据库或对象为只读。]
OLE DB 提供程序 'microsoft.ace.oledb.12.0' 报错。提供程序指出用户没有执行该操作的权限。
[OLE/DB provider returned message: 不能更新。数据库或对象为只读。]
#2
把EXCEL模板 改为 97--2003工作薄 方式
insert into opendatasource('microsoft.jet.oledb.4.0','excel 8.0;hdr=0;data source=E:\test01.xls')...[Sheet1$] select top (10)* from TESTAB
insert into opendatasource('microsoft.jet.oledb.4.0','excel 8.0;hdr=0;data source=E:\test01.xls')...[Sheet1$] select top (10)* from TESTAB
#3
那个我知道啊,我就是想解决 EXCEL 2007的工作簿,因为公司里面都用的 OFFICE 2007
#1
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'microsoft.ace.oledb.12.0' 报错。提供程序指出用户没有执行该操作的权限。
[OLE/DB provider returned message: 不能更新。数据库或对象为只读。]
OLE DB 提供程序 'microsoft.ace.oledb.12.0' 报错。提供程序指出用户没有执行该操作的权限。
[OLE/DB provider returned message: 不能更新。数据库或对象为只读。]
#2
把EXCEL模板 改为 97--2003工作薄 方式
insert into opendatasource('microsoft.jet.oledb.4.0','excel 8.0;hdr=0;data source=E:\test01.xls')...[Sheet1$] select top (10)* from TESTAB
insert into opendatasource('microsoft.jet.oledb.4.0','excel 8.0;hdr=0;data source=E:\test01.xls')...[Sheet1$] select top (10)* from TESTAB
#3
那个我知道啊,我就是想解决 EXCEL 2007的工作簿,因为公司里面都用的 OFFICE 2007