【发布时间】:2014-10-20 00:33:24
【问题描述】:
我有两台电脑,一台安装了 MS Office 2013 32 位,另一台安装了 MS Office 64 位。
我有使用 Win32::OLE Perl 模块来操作 XLS 电子表格的 Perl 代码。
该代码在 32 位 PC 上运行良好,但在 64 位 PC 上出现问题。
在这里做了一些研究后,我发现了。 问题出在以下代码行:
use Win32::OLE::Const 'Microsoft Excel .* Object Library';
我查看了 Win32::OLE::Const 模块内部,似乎该模块正在注册表中寻找该库。当我从 32 位和 64 位打印出注册表中的所有条目时,我发现这个库在 32 位上可用,而在 64 位上不可用。
有没有办法在 64 位上安装该库?如果没有,是否还有其他模块可以实现 Excel 的 OLE 自动化?
我的 Perl 脚本需要做的就是打开 XLS 文件并将其保存为 CSV。我在所有其他脚本中使用Spreadsheet::ParseExcel 和Spreadsheet::XLSX 来做这件事。这个特定 XLS 文件的问题在于它受密码保护并使用非标准密码加密。所以Spreadsheet::ParseExcel 无法打开它。 Win32::OLE 在 32 位上打开文件没有问题。
如果需要,可以提供代码。
请指教。
谢谢你, -安德烈
【问题讨论】:
-
您是在尝试从 32 位还是 64 位 perl 链接到 64 位机器上的库?
-
我不想链接。我想弄清楚为什么 Microsoft Excel .* 对象库在 32 位上可用而在 64 位上不可用,有没有办法让它可用。
-
这就是我所说的链接库的意思。你是想在 64 位机器上用 32 位 perl 还是 64 位 perl 来做?
-
这是为 MSWin32-x64-multi-thread 构建的 perl 5,版本 16,subversion 3 (v5.16.3)
-
我在使用 Excel 和 Outlook 时遇到了同样的问题。我使用的是 Perl 5.10。我刚刚升级到 Perl 5.18,问题仍然存在。