PowerShell 7.2.6 で ClosedXML を使う前の準備

経緯

6, 7 年まえぐらいに、ClosedXML を少し触ったことがありました

PowerShell で ClosedXML を使って Excel ファイルを作成する

それから時代は変わっていき、今は PowerShell Core 全盛時代みたいです

どうせなら PowerShell Core で ClosedXML を利用してみようと思い、環境構築を行って
いましたが勘違いも有りハマってしまったので、また同じことを起こさないようにというメモです

ちなみに、当初 NuGet で作っていたのですが、色々考えて結局パッケージをダウンロードして、
DLL だけを使う方法にしました

環境

  • Windows 10 Pro
  • PowerShell 7.2.6

構築手順

各パッケージのダウンロード

2022年10月10日現在で、ClosedXML の最新バージョンは 0.96.0 です

依存関係は Dependencies で確認でき、利用するのは .NETStandard 2.0 です

DocumentFormat.OpenXml は更に依存関係があったので、下記のパッケージをダウンロードすれば OK でした

保護の解除と DLL の取り出し

ダウンロードしたファイルは保護されているため、解除する必要があります
nupkg ファイルを右クリックして、プロパティを開き、セキュリティで [許可する] にチェックを入れて、[ OK ] ボタンを押します

次に、拡張子を zip に変えて展開して、 lib\netstandard2.0 の中にある DLL ファイルを取得します

これをダウンロードしたファイル全てでおこないます

動作確認

先に取得した DLL をフォルダに入れて、そこに example.ps1 を作成して保存、
PowerShell 7.2.6 で実行します

Add-Type -Path "$PSScriptRoot\ClosedXML.dll"
Add-Type -Path "$PSScriptRoot\DocumentFormat.OpenXml.dll"
Add-Type -Path "$PSScriptRoot\System.IO.Packaging.dll"
Add-Type -Path "$PSScriptRoot\ExcelNumberFormat.dll"
Add-Type -Path "$PSScriptRoot\Microsoft.CSharp.dll"
Add-Type -Path "$PSScriptRoot\System.Drawing.Common.dll"

$workBook = New-Object ClosedXML.Excel.XLWorkbook

$workSheet = $workBook.Worksheets.Add("Sheet1")
$workSheet.Cell("A1").Value = "Hello world";
$workBook.SaveAs("$PSScriptRoot\helloworld.xlsx")

$workSheet = $null
$workBook = $null

作成された Excel を開くと、A1 のセルに Hello world と表示されています

考察

今見ると、どこで引っかかったんだよ… ってレベルで単純で恥ずかしいですが、
これで環境が作れたので次に進んで汚名挽回を図ります(誰に?)