PowerShell で Excel シート データを読み取る
ほとんどの IT プロフェッショナルが、仕事で少なくとも 1 回は使用する必要がある一般的なツールの 1つは、Microsoft Excel です。 しかし残念なことに、多くの IT プロフェッショナルは Excel を小さなデータベース ストアとして使用しているため、大量のデータが蓄積されています。
この記事では、PowerShell を使用して Excel ブックでのデータ読み取りを自動化するための基礎について説明します。
PowerShell で Excel 値を読み取る
Excel ワークブックを PowerShell オブジェクトに保存し、New-Object -ComObject Excel.Application
COM コマンドを使用して読み取って操作できます。 コマンドを機能させるには、Office 2016 パッケージがマシンにインストールされていることを確認してください。
例として、以下の Excel ファイルを見てみましょう。
サンプル.xlsx
:
Name,Salary
John,1000
Paul,2000
Mary,1500
Matt,3000
セルの値を見つけるには、次のスニペットを使用して Excel ブックを開いてメモリに取り込みます。
$excel = New-Object -ComObject Excel.Application
$workbook = $excel.workbooks.Open('C:\PS\Sample.xlsx')
次に、ブック内のワークシートを選択します。 引数は整数値を受け入れます。ここで、1
はシート 1、2
はシート 2 などです。
$sheet = $workbook.Sheets.Item(1)
ワークシートを変数に割り当てたら、個々の行、列、およびセルにドリルダウンできます。 おそらく、特定のセルのセル値を見つける必要があります。
次に、行と列の座標を提供するセル プロパティを参照する必要があります。
$cellValue = $sheet.Cells.Item(2,2).Value2
ただし、セルの座標ではなく名前のアドレスが必要な場合は、Address
関数を使用して表示できます。
コード例:
$cellAddress = $sheet.Cells.Item(2,2).Address()
Write-Output $cellAddress
出力:
$B$2
これらすべてのコマンドを使用して、PowerShell を使用して特定の列のデータをすべて出力するコードのサンプル スニペットを作成できます。
$rangeAddress = $sheet.Cells.Item(2,2).Address() + ":" + $sheet.Cells.Item(5,2).Address()
$sheet.Range($rangeAddress).Value2 | foreach {
$salary = $_
Write-Output $salary
}
出力:
1000
2000
1500
3000
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn