PowerShellでCSVからグラフを自動生成!ImportExcelモジュールで楽々レポート作成

PowerShell

この記事では、CSVファイルからグラフを自動生成してExcelレポートを作る方法について説明します。

以前は Excel COM オブジェクトを使って操作する方法が主流でしたが、実はもっと簡単にできる方法があります。それが ImportExcel モジュール を使う方法です。

このモジュールを使うと、Excelをインストールしていなくても CSVを読み込み、Excelファイルを作成し、グラフまで自動生成することができます。業務で定期レポートを作っている方にとって、かなり便利なツールになるはずです。

ImportExcelモジュールとは?

ImportExcel は、Doug Finke 氏が公開している PowerShell モジュールで、以下のような特徴があります。

  • Excelをインストールしていなくても動作する
  • CSVやオブジェクトを直接Excelファイルに書き込める
  • 罫線やスタイル、グラフの作成も簡単
  • 業務自動化やレポート作成に最適
参考:
GitHub - dfinke/ImportExcel: PowerShell module to import/export Excel spreadsheets, without Excel

事前準備

まずはモジュールをインストールしましょう。管理者権限でPowerShellを開き、以下のコマンドを実行します。

Install-Module -Name ImportExcel -Scope CurrentUser

サンプルデータ(CSVファイル)の準備

例として、以下のような sales.csv  ファイルを用意します。

Month,Sales
Jan,150 
Feb,200 
Mar,180 
Apr,220 
May,300 
Jun,250

CSVをExcelに出力する

まずはシンプルに、CSVをそのままExcelファイルに変換してみます。

Import-Csv .\sales.csv | Export-Excel -Path .\sales-report.xlsx

これだけで、Excelファイルが出力されます。

グラフを作成する方法

次にグラフの自動生成です。Export-Excel には -ChartType オプションがあり、これを指定するとグラフの種類を指定してグラフを作成できます。

(例)棒グラフ(ClusteredColumn)を作る場合

# グラフ定義を作る
$chart = New-ExcelChartDefinition `
 -ChartType ColumnClustered `  # 棒グラフ
 -XRange Month ` # 横軸に使う列
 -YRange Sales ` # 縦軸に使う列
 -Title "売上推移レポート" `
 -NoLegend    # 凡例を非表示

# CSVを読み込み → Excelに書き出し → グラフを追加して表示
Import-Csv .\sales.csv | Export-Excel .\sales-report.xlsx AutoNameRange `
 -WorkSheetName "グラフ" `
 -ExcelChartDefinition $chart `
 -Show

棒グラフ

折れ線グラフにしてみる

折れ線グラフにしたい場合は -ChartTypeLine に変えるだけです。

# グラフ定義を作る
$chart = New-ExcelChartDefinition `
 -ChartType Line `  # 折れ線グラフ
 -XRange Month ` # 横軸に使う列
 -YRange Sales ` # 縦軸に使う列
 -Title "売上推移レポート" `
 -NoLegend    # 凡例を非表示

# CSVを読み込み → Excelに書き出し → グラフを追加して表示
Import-Csv .\sales.csv | Export-Excel .\sales-report.xlsx AutoNameRange `
 -WorkSheetName "グラフ" `
 -ExcelChartDefinition $chart `
 -Show

折れ線グラフ

まとめ

  • PowerShell はデータ取得・加工と組み合わせて、グラフの自動生成まで可能
  • ImportExcel モジュールを使えば、CSV → Excel → グラフという流れをシンプルに実装できる
  • 実践例を作ることで、定期レポートなどの作業を効率化できる
タイトルとURLをコピーしました