志艺风云 发表于 2018-6-11 13:45:50

在没有安装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: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 前面的;号后看还出不出错 。

chzj589 发表于 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

chzj589 发表于 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

chzj589 发表于 2018-6-11 17:30:14

繁星 发表于 2018-6-11 17:18
加上#PRE_UseX64=n

我有试过,可能是版本的原因,
#PRE_UseX64=n与加上#AutoIt3Wrapper_UseX64 = n不一样
前者没用

zch11230 发表于 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)

xyhqqaa 发表于 2018-6-13 16:18:47

谢谢分享~~ 看看

kevinch 发表于 2018-6-13 20:25:16

07版以上可以通过zip文件夹功能解压提取,再用xmldom先处理sharestrings.xml,再处理各个工作表sheet的xml,没试过处理速度到底有多快,只用vbs写出了测试代码,证明是可行的

chzj589 发表于 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位才对吧。
如果这三项都没有的话我也不知是什么情况了。

chzj589 发表于 2018-6-15 14:40:30

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

只加:#AutoIt3Wrapper_UseX64 = y
你这样能通过吗
页: [1] 2 3 4
查看完整版本: 在没有安装Excel的情况下读取数据