ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 1311|回复: 2

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-15 23:59 | 显示全部楼层 |阅读模式
本帖最后由 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鲜花 +2 收起 理由
zpy2 + 2 优秀作品

查看全部评分

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

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

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-8-25 22:01 , Processed in 0.065177 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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