知識マップ: PowerShellでExcel・CSV業務処理を自動化する ── 集計・突合・帳票出力の実務レシピ

記事「PowerShellでExcel・CSV業務処理を自動化する ── 集計・突合・帳票出力の実務レシピ」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

PowerShellでCSV・Excel業務を自動化する際の最大の落とし穴は文字コードで、Windows PowerShell 5.1とPowerShell 7で既定のエンコーディングが異なるため、Import-CsvとExport-Csvは読み書きの両方でエンコーディングを明示しないと文字化けが起こり得ます。集計はGroup-Objectでグループ化してからMeasure-Objectで合計するのが基本形で、2つのCSVの突合はCompare-Objectによる差分検出か、マスタをハッシュテーブル化した結合かを目的に応じて使い分けます。xlsxの出力はExcel本体が不要なImportExcelモジュールが第一候補で、Excel COM操作はCOM参照の解放漏れによるEXCEL.EXEの残留を招きやすく、Microsoftが無人環境でのOffice自動化を推奨していないため、タスクスケジューラでの定期実行には向きません。

PowerShellのExcel・CSV自動化の知識マップCSVの文字コード既定差による文字化けリスクとその対策、Group-ObjectとMeasure-Objectによる集計、Compare-Objectとハッシュテーブルによる突合、ImportExcelモジュールとExcel COM操作の使い分け、無人実行での制約の関係を示す図利用する利用する原因になり得る原因になり得る軽減する利用する利用するより先に行うべき利用する利用する利用する利用する推奨される対応前提とする用いるのは非推奨原因になり得る軽減する前提とする用いるのは非推奨Import-CsvExport-CsvImportExcelモジュールPowerShellCSVの文字化け-Encodingの明示指定Group-ObjectMeasure-ObjectCompare-Objectハッシュテーブルによる列の引き当て(結合)Get-FileHashxlsx出力TLS 1.2の明示的な有効化Excel COM自動化(Excel COM Interop)EXCEL.EXEのプロセス残留Marshal.ReleaseComObjectタスクスケジューラの無人実行

概念間の関係(全19件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Import-Csv
CSVファイルを、ヘッダー行を列名とする「1行=1オブジェクト」の表としてPowerShellへ読み込むコマンドレット。値はすべて文字列として読み込まれる。
Export-Csv
パイプラインのオブジェクトをCSVファイルへ書き出すPowerShellのコマンドレット。
ImportExcelモジュール
PowerShell Galleryで配布されるコミュニティ製モジュールで、Excel本体をインストールせずにxlsxの読み書き・テーブル化・書式設定・ピボットテーブル作成ができる。
PowerShell
オブジェクトパイプラインとエラー処理機構を持つ、Microsoftが最も堅牢で最新のWindows自動化に推奨するコマンドラインシェル兼スクリプト言語。
-Encodingの明示指定
Import-Csv/Export-Csvなどの読み書きで、コマンドレットごとの既定値に頼らず、-Encodingでエンコーディングを明示的に指定すること。
Group-Object
指定したプロパティの値ごとにオブジェクトをグループ化し、件数や内容を集計できるPowerShellのコマンドレット。
Excel COM自動化(Excel COM Interop)
C#などの外部プログラムからCOM経由でExcelアプリケーション本体を起動・操作する自動化方式。
Marshal.ReleaseComObject
RCWの内部参照カウントをデクリメントし、0になった時点でRCWが握るCOM参照を即座に解放する.NETのAPI。公式には絶対に必要な場合にのみ使うことが推奨される。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。