在没有安装Excel的情况下读取数据
看到 怎样在不打开一个Excel的情况下读取里面的数据 贴,发个在没有安装Excel的情况下读取/处理数据的例子对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。系统已自带Jet 引擎。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。
ACE 引擎,如果没有安装office 2007以上版本就需要安装 数据库引擎
https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
不行再设置一下
https://jingyan.baidu.com/article/456c463b440a5c0a583144da.html
如果要连接到 Microsoft Office Excel 数据,请根据 Excel 文件类型添加相应的 OLEDB 连接字符串扩展属性:
文件类型(扩展名) 扩展属性
---------------------------------------------------------------------------------------------
Excel 97-2003 工作簿 (.xls) “Excel 8.0”
Excel 2007-2010 工作簿 (.xlsx) “Excel 12.0 Xml”
启用宏的 Excel 2007-2010 工作簿 (.xlsm) “Excel 12.0 宏”
Excel 2007-2010 非 XML 二进制工作簿 (.xlsb) “Excel 12.0”
.CSV文件应该是 Properties=Text
操作数据跟操作Access 等数据库是差不多的,但是不要用Excel作数据库来使用,只是用来在没有安装Excel时看一下数据。可以看 ADO 教程
如果你的脚本运行或编译为x64版本程序,那么你必须安装office 2007以上的64位版本或安装64位的ACE 引擎(64位的 Microsoft Access 2010 数据库引擎可再发行程序包),脚本前面不能加#AutoIt3Wrapper_UseX64 = n(#PRE_UseX64=n)或加#AutoIt3Wrapper_UseX64 = y
如果你用Jet 引擎或安装office 2007以上的32位版本或安装32位的ACE 引擎(32位的 Microsoft Access 2010 数据库引擎可再发行程序包)那么你只能脚本运行或编译为x86版本程序,脚本前面必须加上#AutoIt3Wrapper_UseX64 = n(#PRE_UseX64=n)
**** Hidden Message *****
本帖最后由 chzj589 于 2018-6-11 15:29 编辑
<根据安装驱动的版本,不是64位时脚本前面加上#AutoIt3Wrapper_UseX64 = n,这个没试,Autoit好像是不支持64位对象,应该是必须加上的。>
这一句好象不对,应该是:
是64位脚本前面要加上#AutoIt3Wrapper_UseX64 = n
包括连接ACCESS数据库:
是64位脚本前面要加上#AutoIt3Wrapper_UseX64 = n
本帖最后由 志艺风云 于 2018-6-11 15:48 编辑
chzj589 发表于 2018-6-11 15:21
<根据安装驱动的版本,不是64位时脚本前面加上#AutoIt3Wrapper_UseX64 = n,这个没试,Autoit好像是不支持 ...
你理解错了我哪话
是脚本前面需要加上#AutoIt3Wrapper_UseX64 = n,即这个脚本只能在运行在x86版本。
Jet 引擎没有64位,ACE 引擎有32位和64位,但好似Autoit只支持32位对象,所以脚本只能在运行在x86版本。
你删除掉;#AutoIt3Wrapper_UseX64 = n 前面的;号后看还出不出错 。
志艺风云 发表于 2018-6-11 15:46
你理解错了我哪话
是脚本前面需要加上#AutoIt3Wrapper_UseX64 = n,即这个脚本只能在运行在x86版本。
J ...
我是故意删除掉;#AutoIt3Wrapper_UseX64 = n ,运行拍照给你看的!
因我是64位 chzj589 发表于 2018-6-11 16:05
我是故意删除掉;#AutoIt3Wrapper_UseX64 = n ,运行拍照给你看的!
因我是64位
如果你是64位操作系统,安装一下64位的ACE 引擎
用#AutoIt3Wrapper_UseX64 = y
来测试一下咯 chzj589 发表于 2018-6-11 15:21
<根据安装驱动的版本,不是64位时脚本前面加上#AutoIt3Wrapper_UseX64 = n,这个没试,Autoit好像是不支持 ...
加上#PRE_UseX64=n 本帖最后由 chzj589 于 2018-6-11 17:27 编辑
志艺风云 发表于 2018-6-11 16:55
如果你是64位操作系统,安装一下64位的ACE 引擎
用#AutoIt3Wrapper_UseX64 = y
来测试一下咯
与删除#AutoIt3Wrapper_UseX64 = n一样
我有装Microsoft Office Excel 2007
繁星 发表于 2018-6-11 17:18
加上#PRE_UseX64=n
我有试过,可能是版本的原因,
#PRE_UseX64=n与加上#AutoIt3Wrapper_UseX64 = n不一样
前者没用 本帖最后由 zch11230 于 2018-6-11 17:50 编辑
啥东西还要隐藏?
不错不错,前两天还和朋友讨论了下,公司的批量导入功能,是不是也是用的ado,因为excel对象操作打开太慢了。
chzj589 发表于 2018-6-11 17:30
我有试过,可能是版本的原因,
#PRE_UseX64=n与加上#AutoIt3Wrapper_UseX64 = n不一样
前者没用
Microsoft Office Excel 2007 你安装的应该是32位的。
这个与操作系统位数没关系的,是已引擎位数有关,与你脚本程序运行位数有关。
我刚试了一下其它对象,Autoit是支持64位对象的。
#PRE_UseX64=n和#AutoIt3Wrapper_UseX64 = n 功能是一样的,只是SciTe用的Wrapper不同版本有差别,我这两个都能用。
准确的说法是:
如果你的脚本运行或编译为x64版本程序,那么你必须安装office 2007以上的64位版本或安装64位的ACE 引擎(64位的 Microsoft Access 2010 数据库引擎可再发行程序包),脚本前面不能加#AutoIt3Wrapper_UseX64 = n(#PRE_UseX64=n)或加#AutoIt3Wrapper_UseX64 = y
如果你用Jet 引擎或安装office 2007以上的32位版本或安装32位的ACE 引擎(32位的 Microsoft Access 2010 数据库引擎可再发行程序包)那么你只能脚本运行或编译为x86版本程序,脚本前面必须加上#AutoIt3Wrapper_UseX64 = n(#PRE_UseX64=n) 谢谢分享~~ 看看 07版以上可以通过zip文件夹功能解压提取,再用xmldom先处理sharestrings.xml,再处理各个工作表sheet的xml,没试过处理速度到底有多快,只用vbs写出了测试代码,证明是可行的 志艺风云 发表于 2018-6-11 18:00
Microsoft Office Excel 2007 你安装的应该是32位的。
这个与操作系统位数没关系的,是已引擎位数有关 ...
刚试了,删除Microsoft Office 2007后,脚本在x64版本运行或编译,文件后缀为.xls可以通过
文件后缀为.xlsx则不行。 chzj589 发表于 2018-6-14 17:17
刚试了,删除Microsoft Office 2007后,脚本在x64版本运行或编译,文件后缀为.xls可以通过
文件后缀为.x ...
如果脚本运行在x64,Autoit调用的的引擎应该是64位才对吧。
如果这三项都没有的话我也不知是什么情况了。
志艺风云 发表于 2018-6-14 21:36
如果脚本运行在x64,Autoit调用的的引擎应该是64位才对吧。
如果这三项都没有的话我也不知是什么情况 ...
只加:#AutoIt3Wrapper_UseX64 = y
你这样能通过吗