如何使用 PowerShell 轻松地将 CSV 拆分为两个 Excel 工作表?

如何使用 PowerShell 轻松地将 CSV 拆分为两个 Excel 工作表?

我最近发现 PowerShell 可用于编写 Excel 文档。我想到的第一个用途是(至少部分地)自动解析我经常要处理的一些 CSV 报告。

我需要做的基本工作如下:

  1. 创建一个包含两个工作表的 Excel 工作簿。
  2. 将 CSV 文件中的列标题复制到两张表的第 1 行。
  3. 对于 CSV 中满足特定条件的每一行(例如:R 列中的值等于“不要放入工作表 1”),将该行附加到 Excel 工作表 2。
  4. CSV 中不属于 Excel 工作表 2 的每一行都应附加到 Excel 工作表 1。

步骤 1 很简单 - 我在网上找到了几份指南来帮助我入门。根据过去的 PowerShell 经验,我相信我可以自己处理步骤 3 和 4 所需的条件逻辑。我很难找到解决方案的问题是将所有数据写入工作表中。

我还没有实际编写过任何生成 Excel 的 PowerShell 脚本,但我见过的每个指南似乎都只包含编写单个单元格的说明 - 而不是一次编写整行。有没有更简单的方法可以做到这一点?

如果存在的话,我会对以下一些事情感兴趣:

  • 将整行从 CSV 文件复制到 Excel 工作表的某些方法,无需循环遍历该行中的各个单元格。
  • 某种方式将整行从一个 CSV 文件复制到另一个 CSV 文件,而无需循环遍历各个单元格,再加上一个命令(或相当短的脚本)将整个 CSV 文件导入 Excel 工作表。
  • 最后的手段:使用 for 循环(或类似的短脚本块)代替写入整行方法。这应该能够确定在何处停止复制一行中的单元格,而不必一直到最后一列(我认为现在是 XFD),同时优雅地处理行中间的空单元格。

除了解决上述问题之外,我的脚本真正困难的部分是确保它可以正常工作有效率的在源 CSV 文件上,可能有数千行(甚至数万行)。

最终脚本需要与 Windows 7、PowerShell 2.0 和 Excel 2010 兼容。

相关内容