PowerShell で Excel シート データを読み取る

Marion Paul Kenneth Mendoza 2023年6月21日
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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn