見出し画像

PowerShell エクセルの特定シートの中身を全部抜く


エクセルの指定したシートの中身を全部抜き取るスクリプトです
エクセルを閉じた状態でないと上手く動かないです。

以前の記事で作ったエクセルファイルからデータを抜き出すような動作をします


class ExcelReader {
 [string]$FileName
 [System.Collections.ArrayList]$Sheets

 ExcelReader([string]$fileName) {
  $this.FileName = $fileName
  $this.Sheets = New-Object System.Collections.ArrayList
  $this.LoadSheets()
 }

 # シート一覧を読み込む
 [void]LoadSheets() {
  $excel = New-Object -ComObject Excel.Application
  $workbook = $excel.Workbooks.Open($this.FileName)
  foreach ($sheet in $workbook.Worksheets) {
   $this.Sheets.Add($sheet.Name) | Out-Null
  }
  $workbook.Close()
  $excel.Quit()
 }

 # 指定されたシートからデータを取得する
 [object[,]]GetData([string]$sheetName) {
  $excel = New-Object -ComObject Excel.Application
  $workbook = $excel.Workbooks.Open($this.FileName)
  $worksheet = $workbook.Worksheets.Item($sheetName)
  $range = $worksheet.UsedRange
  $data = $range.Value()
  $workbook.Close()
  $excel.Quit()
  return $data
 }
}


# Excelファイルからデータを取得する
$reader = New-Object ExcelReader("C:\temp\fruits.xlsx")
$data = $reader.GetData("Sheet1")

# 取得したデータを表示する
$data



他の記事もよろしく


#PowerShell #プログラミング学習 #エクセル #Excel #Windows #IT

いいなと思ったら応援しよう!