如何保证通过 OLE 自动化 Microsoft Excel 时不会出现弹出对话框?我正在使用 Perl 模块 (Win32::OLE)。我可以使用以下代码避免大多数对话框弹出窗口:
use Win32::OLE;
use Win32::OLE::Variant;
use Win32::OLE::Const;
my $excel_symbols = Win32::OLE::Const->Load('Microsoft Excel');
my $excel = Win32::OLE->new('Excel.Application', sub { $_[0]->Quit();} );
$excel->{'Visible'} = 0;
$excel->{'DisplayAlerts'} = 0;
$excel->Workbooks->Open('c:\some_excel_file.xls',
{ 'UpdateLinks' => $excel_symbols->{'xlUpdateLinksNever'},
'ReadOnly' => 1,
'IgnoreReadOnlyRecommended' => 1
});
但是,对于某些文件,我继续收到包含以下文本的对话框:
该文件无法识别
格式。
- 如果您知道该文件来自另一个与以下程序不兼容的程序
Microsoft Excel,单击取消,然后
以原始方式打开此文件
应用。如果您想打开
稍后在 Microsoft Excel 中保存文件
以兼容的格式,例如
作为文本格式。
- 如果您怀疑文件已损坏,请单击“帮助”以获取有关的更多信息
解决问题。
- 如果您仍想查看文件中包含的文本,请单击“确定”。
然后在文本导入中单击完成
向导。
确定 取消
有时会出现类似的对话框,其中包含“确定”、“取消”和“帮助”按钮。
我无法控制提供给脚本的文件的质量。
你可以考虑使用电子表格::ParseExcel http://search.cpan.org/dist/Spreadsheet-ParseExcel/lib/Spreadsheet/ParseExcel.pm(尽管它可能缺少您需要的功能)或阿帕奇兴趣点 http://poi.apache.org/(尽管它需要一些包装才能在 Perl 脚本中使用)而不是通过 OLE 调用 Excel 引擎。这样您就不会看到任何 Excel 生成的对话框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)