PowerShellでExcelPackagePlusを使う

PowerShellでxlsxファイルを扱うに当たり、Microsoft製のClosedXmlを使ってみました。
ところがClosedXMLはPasswordをかけることはできても開くことはできないという情報をみつけました。

How to open a protected Excel File with ClosedXML?(答えは「開けない」)
https://stackoverflow.com/questions/54874591/how-to-open-a-protected-excel-file-with-
closedxml

ClosedXMLに進むのをやめてPassword付きファイルが開けるExcelPackagePlusを試してみることにしました。

ClosedXMLの情報を求めてここに来てしまった方はこちらをご覧ください

ライブラリの入手

基本的にはNugetから入手すればいいと思います。コマンドラインがNuget Galleryの上の方に書かれています。
EPPlus -Nuget Gallery
例えばこんな感じ

Install-Packageを使ってもいいんですが「proxyを通じて社外アクセスしてる環境ではコケる」ことが多々あります。Powershell5.1以降であればProxyの内側からインストールできます。-Proxyおよび-ProxyCredentialオプションが使えます。詳しくは下記Qiita記事を参照してください。6とありますが、5.1でも使えます

PowerShell 6にプロキシ経由でモジュールインストール

nugetのサイトからライブラリを直接ダウンロードする。

Nuget Galleryの右の方に「Download package」と書かれています。これをダウンロードするとWebから直接ダウンロードできます。2020年4月現在の安定最新版は5.1.0なので、「epplus.5.1.0.nupkg」というファイルで落ちてきます。この拡張子をzipに変えて展開してください。Windows環境で動かすには依存関係がないのでこっちの方が楽だと思います。

EPPlusの使用

ライブラリのロード

依存性がなく単体で動くので、Add-Typeするだけで動きます。かんたん。

Excelファイル操作

interopとの差分でお送りしますw
interopは動いているExcelのオブジェクト操作、EPPlusはxlsxというXMLファイルの操作という違いがわかればそんなに難しくありません。

xlsxファイルはMicrosoftが策定したXML規格ファイルをzip圧縮したものです。拡張子を.zipに変えて展開するとXMLファイルが出てきます。

InteropはMicrosoftがアプリケーション間通信を通じてWindows内の他のアプリケーションを操作する機構を通じて操作しています。わからないことがあったらVBAで検索して文法変えれば実装できるのが強みですが、対話ログオンしかサポートされていません。

上段がinterop,下段がEPPlusです。

interopで20分かかっていた操作が3分ぐらいで終わるようになり満足です♪

PowerShellでExcelPackagePlusを使う” に対して1件のコメントがあります。

コメントを残す

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

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