【问题标题】:Read a value from a .xls file using .bat files使用 .bat 文件从 .xls 文件中读取值
【发布时间】:2009-06-20 05:43:32
【问题描述】:

我只是想知道是否有任何方法可以使用 .bat 文件从 .xls 文件中读取值。 例如:如果我有一个名为 test.xls 的 .xls,它有两列 即“EID”,然后是“邮件 ID”。现在,当我们向 .xls 输入 EID 名称时。它应该提取与 EID 对应的邮件 ID 并将结果回显出来。

**EID**                  **MailID**
E22222                    MynameisA@company.com

E33333                    MynameisB@company.com

...
...

所以通过上表,当我使用我的 .bat 文件作为 E22222 向 xls 文件输入输入时,它应该读取相应的邮件 ID 作为 MynameisA@company.com 并且它应该回显该值。

所以我希望我能够提出我的疑问。请回复我以获得更多说明。

感谢和问候 麦迪

【问题讨论】:

  • 如果您的系统能负担得起 Perl,有多种方法可以将 XLS 转换为逗号分隔值 (CSV) 文件。我曾经在这个 SO 问题上为自己检查过这个:stackoverflow.com/questions/943153/…。然后,您可以非常轻松地 grep 数据。
  • 实际上,你不需要 Perl,其他东西也可以工作,你会在那个答案中找到。

标签: batch-file xls


【解决方案1】:

无法直接使用传统的.bat 文件执行此操作。但是,您可能会调查PowerShell,它旨在能够执行此类操作。 PowerShell 与现有的 Windows 应用程序(如 Excel)很好地集成,并且可以提供您轻松完成此操作所需的工具。

快速搜索出现了这个example of reading Excel files from PowerShell

【讨论】:

  • 非常感谢 Greg。但只是对使用哪个感到困惑。因为我需要这个邮件 ID 以便我可以添加到我的 CruiseControl.NEt 配置文件的邮件 ID 部分
【解决方案2】:

您不能直接从批处理文件中执行此操作。此外,要在脚本中使用 Excel 文件,您需要安装 Excel。

您可以做的是将特定于 Excel 的内容包装在 VBScript 中,然后从您的批处理中调用它。

【讨论】:

    【解决方案3】:

    这在 BAT 中很难(几乎不可能),尤其是在使用原始 XLS 文件时,但即使在导出到 CSV 之后,使用脚本/编程语言也会更加容易(Perl、C 等)来做到这一点。

    【讨论】:

      【解决方案4】:

      您可以使用 Alacon - Alasql 数据库的命令行实用程序来完成。

      它适用于 Node.js,所以你需要安装 Node.js 然后 Alasql 包:

      要从 Excel 文件中获取数据,您可以使用以下命令:

      > node alacon "SELECT VALUE [mail ID] FROM XLS('mydata.xls', {headers:true}) 
                         WHERE EID = ?" "E2222"
      

      Fist 参数是一个 SQL 表达式,它从 XLSX 文件中读取带有标题和搜索数据的数据 对于第二个参数值:“E22222”。该命令返回邮件 ID 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        • 2013-07-10
        相关资源
        最近更新 更多