在 Perl 中自动处理 Excel 文件并避免对话框/UI 交互

2024-01-11

如何保证通过 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(使用前将#替换为@)

在 Perl 中自动处理 Excel 文件并避免对话框/UI 交互 的相关文章

  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • VBA根据单元格的值是否为零显示/隐藏行

    我有一个 Excel 工作表 我想根据另一个单元格中的值隐藏或取消隐藏某些行 简而言之 整个事情应该取决于单元格中的值C2 D2 E2 If C2 is blank我想rows 31 to 40被隐藏 如果是的话不为空 他们需要是visib
  • Apache poi setformula 不适用于 SE

    我正在尝试在 XSSFCell With POI 中设置公式 Cell setFormula SE D87 0 D80 D87 错误是 名称 SE 在当前工作簿中完全未知 Why 看起来您正在尝试创建一个IF公式 我发现这一页 http w
  • 如何在 Azure 逻辑应用中解析 Excel 电子表格

    我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息 我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能 此外 我的逻辑应用程序执行 FOR EACH 来读取所有附件 来自未读电子邮件 并确保
  • 在Google电子表格中划分整列

    我是 Google 电子表格的一个相对较新的用户 我希望 B 列中的每个单元格都是 A 列 同一行 中内容除以 5 的结果 B1 B2 B3 等 商 应为 A1 A2 A3 等 被除数 除以 5 除数 在示例中 B1 A1 5 我知道一项一
  • 如何使用 Perl CGI 脚本提供图像?

    我的 Google fu 让我失望了 如何使用 Perl 提供已生成的图像 Example img src getimage pl getimage pl 里有什么 干得好 usr bin perl w my file inner nav
  • 在组合框中显示可见工作表

    您好 我有以下代码来在组合框中显示工作表 创建工作表后 工作表会自动添加到列表中 我不希望隐藏的工作表在保管箱中可见 我怎么做 Option Explicit Private Sub ComboBox1 Change If ComboBox
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • 所以,我有 6 个“主”文件,然后分为 40 个单独的文件

    我将简要描述我想要的内容 我有 6 个 主 文件 每个文件包含 40 个工作表 如下所示 AG 工作簿有 HR Gp 1 到 HR Gp 40 ER 工作簿有 FB Gp 1 到 Gp 40 等 所有工作表都已 平坦 我已经成功创建了一个适
  • Activity 类型中的方法 showDialog(int) 在 Android 中已被弃用?

    方法showDialog int 从类型Activity is 已弃用 什么原因 以及如何解决 什么原因 http developer android com reference android app Activity html show
  • 如何在 Perl 中复制整个目录?

    我需要将整个目录复制到某个位置 最好的方法是什么 File Copy正如我所见 仅逐个文件复制 顺便说一句 我在Windows下工作 感谢帮助 也许调查一下文件 复制 递归 http metacpan org pod File Copy R
  • 每次我们调用浏览器时,在 selenium 中使用 driver.manage().window().maximize() 是否好?

    We use driver manage window maximize 最大化浏览器 我在网上看到一些使用的例子driver manage window maximize 尽管不需要最大化浏览器 例如 gmail 登录 我还看到使用 se
  • 使用 Cygwin 安装 CPAN GD 模块失败

    我已经尝试解决为什么 CPAN GD 模块无法使用 Cygwin 安装 2 天了 任何帮助深表感谢 谢谢 cpan install GD Going to read home xxxxxxxxxx cpan Metadata Databas
  • 在新实例中打开 SAS 程序

    我正在尝试找出一种在单击时默认在增强编辑器的新实例中打开 SAS 程序的方法 问题是asked https stackoverflow com questions 4654876 open sas program in new window
  • numpy NPV 和 Excel NPV 有区别吗?

    我的 Excel 中有一行包含 11 个值 TotalSavings 0 8000 8000 8000 8000 8000 8000 8000 8000 8000 8000 贴现率为 0 08 我在 Excel 中使用 计算 NPVNPV
  • VSTO 替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 VSTO 有哪些替代方案 ManagedXll 能做什么而 VSTO 不能 你什么时候使用其中一个而不
  • 支持 >65k 行的 Excel VBA SQL 驱动程序

    在 Excel 2010 中通过 VBA 查询 Excel 数据时 我遇到一个有趣的问题 我正在使用这些驱动程序连接到 xls 或 xls x m 文件 Sub OpenCon ByRef theConn As Connection ByV
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 使用宏打开受信任文档或启用宏时 Excel 崩溃

    正如标题所示 我无法使用宏打开受信任的文档 Excel 立即崩溃 制作文档的副本允许其打开 因为该副本不受信任 并且我可以检查 VB 编辑器中的宏 但启用宏会导致另一次崩溃 为什么会发生这种情况以及我可以采取什么措施来解决它 我今天遇到了类

随机推荐

  • Flutter - 跨多个设备的端到端加密的密钥存储

    我正在编写一个 flutter 应用程序 用户基本上可以在其中创建注释 我编写了代码来为用户创建私钥 稍后用于加密他们的数据 加密数据存储在 Firebase Firestore 中 当检索他们的数据时 将使用他们的密钥对其进行解密 我看过
  • TensorFlow:“模块”对象没有属性“SessionRunHook”

    我在 Ubuntu 16 04 上运行 TensorFlow r0 10 版本 我已经能够运行一些基本教程 包括 MIST 字符识别教程 我正在努力完成CIFAR 10 https www tensorflow org versions r
  • 在线和离线用户实时使用 strope.js

    我在用strope js用于连接的 javascript 客户端库xmpp server openfire 使用下面的代码 var BOSH SERVICE http 127 0 0 1 7070 http bind connection
  • 将表单另存为图像(屏幕截图)

    我有两种形式 表格 1 包含我需要截图的内容 表格 2 包含图形绘制 该表格始终位于顶部但透明 我需要对第一个表单进行屏幕截图 而不将其放在表单 2 之上 也不包含表单 2 中的内容 这是我正在处理的一些问题 我正在努力修复 Private
  • Android checkbox.isChecked() 无法正常工作

    我有一个ListView其中一个checkbox显示在每行中 每一次checkbox被触摸 我检查它是否被选中 但每次 第一项总是返回false 但是 如果选中第 2 项 则 ischecked 第一项的复选框的方法总是返回true 这是我
  • 捕获 Ruby on Rails 应用程序的屏幕截图 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 Rails 应用程序 我想在用户输入 URL 时捕获网页的屏幕截图 是否可以在 Rails
  • SVN + SASL + ActiveDirectory:如何

    我正在尝试设置 SVN 以针对 ActiveDirectory 进行身份验证 我知道如果您将 SVN 设置为使用 Apache 提供服务 这是可能的 但这样做会带来太多开销 并且 SVN 运行速度太慢 通过阅读 SVN 文档 听起来现在应该
  • Python / Excel 自动化 - 将 2 个单元格中的文本放入 1 个单元格中

    我正在使用 python 自动执行使用 Excel 工作表列表创建多个名称标签的过程 我的问题是 我需要获取 名称 列和 企业 列值并将它们放入新文档的单个单元格中 像这样 To this 现在我正在使用 openpyxl 虽然我设法转移其
  • 在到期日期前“x”天启动 Sharepoint 工作流程

    我想在 Sharepoint 列表上创建工作流程 它应该发送通知电子邮件 问题是我希望此工作流程基于到期日期 在到期日期前 30 天发送电子邮件 并且我不创建或更新任何新的列表项 我知道只有在更改 创建任何项目时才能创建工作流程 但我在网上
  • 如何使用 .NET 检索数码相机拍摄的照片的属性?

    最好在 VB Net 中 但 C 也可以 我如何访问数码相机添加到文件中的额外属性 例如Date Picture Taken Shutter Speed or Camera Model 我维护一个库 为从各种文件格式中提取图像元数据提供全面
  • 代码:Blocks Mingw 编译器错误:可变大小对象可能未初始化

    我正在使用 C 创建一个简单的终端幻想游戏 我似乎遇到了错误 错误 可变大小的对象 项目 可能未初始化 这是代码 string useItem int item string items item HP Potion Attack Poti
  • 在WPF中,调用datagrid.CancelEdit()后DataGridTextColumn的值不会回滚

    我有一个包含两个文本列的数据网格 允许用户修改默认值 1 单击按钮时 如果用户按 是 我将显示一条确认消息 数据网格文本列的值应使用新值保存 如果是 否 网格文本列的值应滚动 重置回默认值或以前的值 问题在于 当用户单击确认消息中的 否 按
  • 向 PostgreSQL 添加不区分大小写的排序规则

    默认情况下 PostgreSQL 没有不区分大小写的排序规则 它的文档描述了一种根据操作系统区域设置添加新排序规则的方法 例如 http www postgresql org docs 9 1 static sql createcollat
  • 拉取后无法加载项目:“预期为‘ENCODING’,但发现为‘utf-8’。”

    从 git 拉取项目 WPF 应用程序 后 我收到此错误 可能是什么原因造成的 在拉动它之前它工作得很好 其他人致力于该项目 我的 csproject 文件中似乎有一些未关闭的标签 但奇怪的是 却报了上面的错误
  • 转换为 .NET 4 后 ClickOnce 升级失败

    我们的应用程序是通过 ClickOnce 部署的 NET 3 5 我们刚刚升级到 NET 4 0 并适当更新了先决条件 对于首次使用的用户或通过安装 HTML 页面安装的用户来说 安装仍然可以正常工作 它将自动为他们安装 NET 4 框架
  • PHP 包含的 html 内容会影响我的 seo 吗?

    今天我购买了一个小型 CMS 系统 有了这个 CMS 我可以将静态站点转换为可编辑页面 我必须剪切我想要编辑的内容 然后将其粘贴到管理区域中 该脚本将生成包含此内容的新 html 我必须将此 html 包含到原始内容所在的位置 我需要一些关
  • 多个字典具有重复的键但不同的值并且列中没有限制

    这里的数据集在字典中具有无限的键 根据客户的不同 行中的详细信息列可能有不同的信息产品 ID Name Detail 1 Sara Personal ID 001 Name Sara Type 01 TypeName Book Order
  • 了解 C# 中的事件和事件处理程序

    我了解事件的目的 尤其是在创建用户界面的背景下 我认为这是创建事件的原型 public void EventName object sender EventArgs e 事件处理程序有什么作用 为什么需要它们 以及如何创建一个事件处理程序
  • 如何强制 Angular 7+ Material Autocomplete 输入仅由数据源提供的字母?

    Edit 下面发布了一些针对模板驱动表单的解决方法 请参阅答案 我正在寻找反应形式的解决方案 如何强制 Angular Material 自动完成输入仅由数据源提供的字母 gt gt 在 stackblitz com 上查看整个应用程序 h
  • 在 Perl 中自动处理 Excel 文件并避免对话框/UI 交互

    如何保证通过 OLE 自动化 Microsoft Excel 时不会出现弹出对话框 我正在使用 Perl 模块 Win32 OLE 我可以使用以下代码避免大多数对话框弹出窗口 use Win32 OLE use Win32 OLE Vari