使用PowerShell中的多个工作表从.CSV读取数据

时间:2015-08-29 17:14:22

标签: powershell csv

这是我的代码:

$Process = @()
$Energy = @()

Import-Csv C:\Users\Shuai\Desktop\test\Test.csv |`
ForEach-Object {
                $Process += $_."Process"
                $Energy += $_.Energy
               }

$inputName = Read-Host -Prompt "Process"

if ($Process -contains $inputName)
               {
                 Write-Host "Customer Exists!"
                 $Where = [array]::IndexOf($Process, $inputName)
                 $Energy[$Where]
               }

我使用此代码从.CSV读取数据。目前,只有一个工作表。我想在同一个文件中添加另一个带有新表的工作表。如何从这个新工作表中读取数据而不影响第一个?我是否需要为两个工作表创建变量?我应该使用什么代码?

1 个答案:

答案 0 :(得分:2)

首先,没有必要将您的值放入单独的数组中。事实上,将数据保存在Import-Csv提供的模型中会使您的工作更轻松:

$ProcessSheet = Import-Csv C:\Users\Shuai\Desktop\test\Test.csv
$inputName = Read-Host -Prompt "Process"

$Process = $ProcessSheet |Where-Object {$_.Process -eq $inputName}
if ($Process)
{
    Write-Host "Customer Exists!"
    $Process
}

CSV-file格式非常简单,基本上代表单页中的数据集。

因此,如果您想要一个单独的表,请使用单独的文件!

$ProcessSheet = Import-Csv C:\Users\Shuai\Desktop\test\Test.csv
$inputName = Read-Host -Prompt "Process"

$Process = $ProcessSheet |Where-Object {$_.Process -eq $inputName}
if ($Process)
{
    Write-Host "Customer Exists!"
    $Process
}

# New sheet? New variable!
$ServiceSheet = Import-Csv C:\Users\Shuai\Desktop\test\Test2.csv
$inputName = Read-Host -Prompt "Service"

$Service = $ServiceSheet |Where-Object {$_.Service -eq $inputName}
if($Service){
    Write-Host "Service Exists!"
    $Service
}

如果要在同一文件中存储多个工作表,则必须使用Excel。