ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3108|回复: 2

[分享] 实现定时自动把SQL查询结果输出到excel指定的工作簿第二行位置

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-15 23:59 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 kw868 于 2018-4-19 02:42 编辑

成功用NSERT INTO OPENROWSETSQL查询结果输出到excel指定工作簿的第二行(第一行是固定的列标题)
实现定时自动把SQL查询结果输出到excel指定的工作簿第二行(excel文件的第一行是固定的列标题)解决方案:
  成功导出结果的截图:
成功.jpg

第一步、必须在64Win7winows2012server 操作系统中安装Microsoft Access Engine工具
安装的时候会出现问题。你从微软的主页下载,会发现有两个版本,一个是位32位系统准备的,另一个是为64位系统准备的。因为我们是Win7 64位系统,而且项目用到的dll都是64位的,所以要装Microsoft Access Engine-x64,安装方法:
直接使用"/passive"命令来安装(无需卸载原来32位的相关程序),
windows win+R 运行 输入  "D:\ Microsoft AccessEngine-x64" /passive 回车就自动开始安装 安装完机器会自动重启。D:\ Microsoft AccessEngine-x64是把下载的MicrosoftAccess Engine-x64.exe 直接放在D盘根目录下!
运行.jpg
安装成功.jpg

安装完成机器重启后后,查看注册表 (查看注册表命令  windows win+R 运行regedit-回车)
在弹出来的注册表列表中依次:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths,删除mso.dll
删除mso.dll这不重要哦,不然以后用excel 每次都提示要你重装excel

第二步、在sql的查询器中执行
   USE [master]   
GO   
EXEC master.dbo.sp_MSset_oledb_propN'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1   
GO   
EXEC master.dbo.sp_MSset_oledb_propN'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1   
GO
图例:

第二步.jpg

  第三步、在sql的查询器中执行
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
图例:
第三步.jpg


在导出数据过程中会碰到以下几种情况,可以分别按照出现的执行提示,参照下面办法处理:
1、无法创建链接服务器 "(null)" 的 OLE DB 访问接口"Microsoft.Ace.OleDb.12.0" 的实例。
解决方案:控制面板/管理工具/服务/SQL Server (SQLEXPRESS) --> 右键 属性 --> 登录 --> 设置: 登录身份=本地系统账户  --> 重启电脑
2、无法从链接服务器 "(null)" 的 OLE DB 访问接口"Microsoft.ACE.OLEDB.12.0"获取列信息。
解决方案:   SQL Management Studio:SQL服务器-->服务器对象-->链接服务器-->Microsoft.ACE.OLEDB.12.0 属性-->常规-->选中:1、动态参数;2、允许进程内  (把这两项的勾去掉)。
3、链接服务器"(null)" 的 OLE DB 访问接口"Microsoft.Ace.OleDb.12.0" 指示该对象没有列,或当前用户没有访问该对象的权限
解决方案:
  指定的excel文件中的列数与查询语句需要输出的列数要一致。见图例说明:
第四步.jpg

文件夹权限.jpg

以上解决方法 我参考了下面两个网址的相关指导文章,一并感谢!
  https://blog.csdn.net/sundacheng1989/article/details/17925431
  https://blog.csdn.net/wonsoft/article/details/7730976




第二步.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-1 23:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-4 18:48 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-23 16:40 , Processed in 0.049068 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表