1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerShell 7.2.6 で ClosedXML を使う前の準備

Posted at

経緯

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 と表示されています

考察

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?