找回密码
 加入
搜索
查看: 21546|回复: 55

[AU3基础] 在没有安装Excel的情况下读取数据

  [复制链接]
发表于 2018-6-11 13:45:50 | 显示全部楼层 |阅读模式
看到 怎样在不打开一个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)


游客,如果您要查看本帖隐藏内容请回复







评分

参与人数 1金钱 +10 收起 理由
cihron + 10 很给力!

查看全部评分

发表于 2018-6-11 15:21:10 | 显示全部楼层
本帖最后由 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:46:03 | 显示全部楼层
本帖最后由 志艺风云 于 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 16:05:13 | 显示全部楼层
志艺风云 发表于 2018-6-11 15:46
你理解错了我哪话
是脚本前面需要加上#AutoIt3Wrapper_UseX64 = n,即这个脚本只能在运行在x86版本。
J ...

我是故意删除掉;#AutoIt3Wrapper_UseX64 = n ,运行拍照给你看的!
因我是64位
 楼主| 发表于 2018-6-11 16:55:15 | 显示全部楼层
chzj589 发表于 2018-6-11 16:05
我是故意删除掉;#AutoIt3Wrapper_UseX64 = n ,运行拍照给你看的!
因我是64位

如果你是64位操作系统,安装一下64位的ACE 引擎
用#AutoIt3Wrapper_UseX64 = y
来测试一下咯
发表于 2018-6-11 17:18:58 | 显示全部楼层
chzj589 发表于 2018-6-11 15:21
<根据安装驱动的版本,不是64位时脚本前面加上#AutoIt3Wrapper_UseX64 = n,这个没试,Autoit好像是不支持 ...

加上#PRE_UseX64=n
发表于 2018-6-11 17:25:52 | 显示全部楼层
本帖最后由 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:30:14 | 显示全部楼层

我有试过,可能是版本的原因,
#PRE_UseX64=n与加上#AutoIt3Wrapper_UseX64 = n不一样
前者没用
发表于 2018-6-11 17:48:01 | 显示全部楼层
本帖最后由 zch11230 于 2018-6-11 17:50 编辑

啥东西还要隐藏?
不错不错,前两天还和朋友讨论了下,公司的批量导入功能,是不是也是用的ado,因为excel对象操作打开太慢了。
 楼主| 发表于 2018-6-11 18:00:04 | 显示全部楼层
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)
发表于 2018-6-13 16:18:47 | 显示全部楼层
谢谢分享~~ 看看
发表于 2018-6-13 20:25:16 | 显示全部楼层
07版以上可以通过zip文件夹功能解压提取,再用xmldom先处理sharestrings.xml,再处理各个工作表sheet的xml,没试过处理速度到底有多快,只用vbs写出了测试代码,证明是可行的
发表于 2018-6-14 17:17:34 | 显示全部楼层
志艺风云 发表于 2018-6-11 18:00
Microsoft Office Excel 2007 你安装的应该是32位的。

这个与操作系统位数没关系的,是已引擎位数有关 ...

刚试了,删除Microsoft Office 2007后,脚本在x64版本运行或编译,文件后缀为.xls可以通过
文件后缀为.xlsx则不行。
 楼主| 发表于 2018-6-14 21:36:32 | 显示全部楼层
chzj589 发表于 2018-6-14 17:17
刚试了,删除Microsoft Office 2007后,脚本在x64版本运行或编译,文件后缀为.xls可以通过
文件后缀为.x ...


如果脚本运行在x64,Autoit调用的的引擎应该是64位才对吧。
如果这三项都没有的话我也不知是什么情况了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2018-6-15 14:40:30 | 显示全部楼层
志艺风云 发表于 2018-6-14 21:36
如果脚本运行在x64,Autoit调用的的引擎应该是64位才对吧。
如果这三项都没有的话我也不知是什么情况 ...

只加:#AutoIt3Wrapper_UseX64 = y
你这样能通过吗
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 08:30 , Processed in 0.081838 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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