最简单的Powershell导入-Excel问题

gjmwrych  于 2022-12-14  发布在  Shell
关注(0)|答案(2)|浏览(127)

Excel文件的输出内容中有一列或多列非空。
示例数据:

希望仅输出公司、城市、州和第一个产品
我蹩脚的代码尝试:

$File  = 'C:\test1.xlsx'
$data = Import-Excel -Path $File | Where-Object "Company" -ne " "
$data

输出与输入相同,即显示所有行

omhiaaxx

omhiaaxx1#

答案很简单...........酝酿中的时间:

$File  = 'C:\test1.xlsx'
$data = Import-Excel -Path $File | where {$_.Company} 
$data
mznpcxlj

mznpcxlj2#

  • 您的own answer对 * 字符串 * 或 * 未填充 * 的列值有效(在这种情况下,它们为$null):
  • where {$_.Company}依赖于PowerShell的implicit to-Boolean coercion,并使用Where-Object cmdlet的内置where别名。
  • 因此,您可以通过使用simplified syntax(这也是您在最初尝试中使用的,错误地使用了" ",即用于比较的 * 单个空格 *)来简化解决方案:
$File  = 'C:\test1.xlsx'
$data = Import-Excel -Path $File | where Company
$data
  • 一种 * 通用 * 解决方案,也适用于包含 * 数字 * 数据的列:
$File  = 'C:\test1.xlsx'
$data = Import-Excel -Path $File | where Company -notlike ''
$data
  • PowerShell前面提到的隐式to-Boolean强制也将 numeric0视为$false,因此where Company也将排除为0的列值。
  • 通过使用-notlike '',LHS被隐式强制为 * 字符串 *,这使得''$null都产生$true,但 * 不 * 产生数字0值。

相关问题