【ImportExcel】Import-Excelコマンドレットの使い方【PowerShell】

ImportExcelモジュールのImport-Excelコマンドレットの使い方

ImportExcel

PowerShellでExcelを扱おうとすると、いくつかライブラリの選択肢があるんですがImportExcelが非常に便利だったので使い方のメモ。

ImportExcelはExcelPackagePlusのdllを使ってモジュール化したものです。ExcelPackagePlusが高機能なのでImportExcelも結構高機能です。中でもイチオシはMicrosoft製ClosedXMLでは扱えないパスワード付Excelが扱えることです。

使い方の情報を探したんですが、作者が使い方をプレゼンしている動画とGitHubでバージョンアップしたときに追加機能のサンプルを付けてるくらいのよう。

dfinke/ImportExcel -GitHub

ということで、自分用メモを兼ねてのご紹介。

ImportExcelの入手

PowerShell GalleryのImportExcelのページで入手できます。

Install-Moduleコマンドレット、Azureへのデプロイ(配置)、nupkgのマニュアルダウンロードの3つの方法が書いてあります。
Powershell遣いであればInstall-Moduleコマンドレットで構わないと思います。
ただし、Install-ModuleコマンドレットはPowerShell5.0以降なので、最新版に上げるかマニュアルダウンロードです。
Windows PowerShell のインストール

Proxyがあってうまく行かない、とか管理者権限がない、という方は下記をごらんください

マニュアルダウンロードの場合は、拡張子をzipに変えれば展開できます。展開したフォルダはバージョン情報が付いているのでImportExcelに変名してModulePathに置けば大丈夫です。

Import-Excelコマンドレット

動作はImport-CSVに似ています。ベタなデータのみがあるxlsxファイルの場合、パスを引数にして実行するとデータが格納されます。

データがある範囲を読み込んでImport-CSVと同様にPSCustomObjectに格納してくれます。
複数行ある場合は、一行がPSCustomObjectになり、シート全体はPSCustomObjectの配列になります。
これの良いところは空いてる列や行は飛ばして読み込んでくれるところです。隣り合ったセルを結合されていても気にせず取り込むことができます。

また、何も指定しない場合1行目をヘッダーとして扱い、PSCustomObjectのPropertyの名前になります。
-NoHeaderをつければ勝手にp1,p2,p3でヘッダーをつけてくれますし、-HeaderNameを使って個別につけることもできます。

読み込むセル範囲の指定もできるので非常に便利です。
正直、これぐらいMicroSoftさん自分で作ってくれよ、というくらい高機能(^_^;

詳しくは下のHelpを参考にしてください。

Import-Excelコマンドレットヘルプの日本語化

機械翻訳の部分もあるので読みにくいところはご容赦ください

【ImportExcel】Import-Excelコマンドレットの使い方【PowerShell】” に対して1件のコメントがあります。

  1. 名無し より:

    以下のエラーが出力されてしまうのですが、原因、解決方法はご存知でしょうか?

    型 [OfficeOpenXml.ExcelPackage] が見つかりません。
    発生場所 C:\Users\i\Documents\WindowsPowerShell\Modules\importexcel.7.1.1\Public\Import-Excel.ps1:14 文字:9
    + [OfficeOpenXml.ExcelPackage]$ExcelPackage,
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (OfficeOpenXml.ExcelPackage:TypeName) []、RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

    1. sito より:

      どのコマンドを実行した時点でエラーになるでしょうか?
      エラーになるまでの操作履歴の情報があると、あたりがつけやすいです。

      Import-Module ImportExcelの時点でしょうか?
      pathの中にimportexcel.7.1.1が含まれているということは、nupkgを展開してModulepathに保存してますか?
      Import-ModuleはModulesフォルダの下のフォルダ名とその下のモジュール宣言ファイル(psd1)のファイル名でモジュール名をみているようです。
      フォルダ名をimportexcel7.1.1→imortexcelに変えてImport-Moduleすれば通りませんか?

      上記でないのだとすると、githubのQ&Aの内容を参考に記載しておきます。
      記事にあるように、ImportExcelはEPPlusを内部で使っています。
      型の情報はepplus.dll中に定義されているのでこれが読み込めていないのがエラーの内容です。
      ImportExcelモジュールはユーザ権限でもimportできるので管理者権限が問題ではないのでは。

      下記を実行してみてエラーが出るでしょうか?
      Install-Module -Name ImportExcel -Scope CurrentUser
      get-service | export-excel

      だとしたら、Add-Typeで明示的にdllを読み込んでみてください。
      Add-type -path “$env:userProfile\Documents\WindowsPowerShell\Modules\Importexcel\epplus.dll”

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください