首页 > 解决方案 > 从 Excel 粘贴数据并转换为数组?

问题描述

我是新的 powershell,想从 Excel 中获取服务器列表,然后将其粘贴到输入窗口中。它应该将它隔离并一个接一个地处理它。

即给出服务器的名称:

arvdel1
arvdel2
arvdel3
arvdel4

它应该把它当作

$a=@(arvdel1,arvdel2,arvdel3,arvdel4)

我怎样才能做到这一点?

标签: powershellpowershell-2.0powershell-3.0powershell-remoting

解决方案


目前还不清楚你在追求什么。

  • 您根本无法将 excel 单元格范围粘贴到 powershell 控制台提示符中而不会出现一堆错误。
  • PowerShell 脚本可以在自己的提示符下等待接受输入,
    • 这里的第一个问题是单个输入 ( Read-Host) 将由一个cr/lf序列终止,这是 excel 用来分隔相邻ROW的方法。因此,您将需要一个循环来捕获所有粘贴的 ROW。第二个问题是您不知道何时处理所有行。
    • 复制具有多列的范围时,它们是TAB分开的

要使用多个列/行处理未知的剪贴板(文本)内容,我将使用(如评论中所建议的那样)Get-Clipboard并使用基于 RegEx 的拆分运算符与 OR 来拆分 aTABCR/LF

粘贴excel列

> (Get-Clipboard) -split '\t|\r?\n'
arvdel1
arvdel2
arvdel3
arvdel4

粘贴excel行

> (Get-Clipboard) -split '\t|\r?\n'
arvdel1
arvdel2
arvdel3
arvdel4

粘贴 excel 列和行

> (Get-Clipboard) -split '\t|\r?\n'
arvdel1
arvdel2
arvdel3
arvdel4
arvdel2
C3
D3
E3
arvdel3
C4
D4
E4
arvdel4
C5
D5
E5

您当然可以分配给变量或直接附加 aForEach-Object来处理它们,而不是输出到控制台。


编辑:使用DFinke 的 ImportExcel 模块直接从 PowerShell 读取上述 excel 文件的替代方法

> import-excel .\Data.xlsx

ServersCol
----------
arvdel1
arvdel2
arvdel3
arvdel4

推荐阅读