知識マップ: 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自動化を推奨していないため、タスクスケジューラでの定期実行には向きません。
flowchart LR
accTitle: PowerShellのExcel・CSV自動化の知識マップ
accDescr: CSVの文字コード既定差による文字化けリスクとその対策、Group-ObjectとMeasure-Objectによる集計、Compare-Objectとハッシュテーブルによる突合、ImportExcelモジュールとExcel COM操作の使い分け、無人実行での制約の関係を示す図
import_csv["Import-Csv"]
export_csv["Export-Csv"]
importexcel_module["ImportExcelモジュール"]
powershell["PowerShell"]
csv_mojibake["CSVの文字化け"]
explicit_encoding_param["-Encodingの明示指定"]
group_object["Group-Object"]
measure_object["Measure-Object"]
compare_object["Compare-Object"]
hashtable_join["ハッシュテーブルによる列の引き当て(結合)"]
get_filehash["Get-FileHash"]
xlsx_output["xlsx出力"]
tls_1_2["TLS 1.2の明示的な有効化"]
excel_com_automation["Excel COM自動化(Excel COM Interop)"]
excel_com_process_residue["EXCEL.EXEのプロセス残留"]
release_com_object["Marshal.ReleaseComObject"]
task_scheduler["タスクスケジューラの無人実行"]
powershell -->|"利用する"| import_csv
powershell -->|"利用する"| export_csv
import_csv -.->|"原因になり得る"| csv_mojibake
export_csv -.->|"原因になり得る"| csv_mojibake
explicit_encoding_param -->|"軽減する"| csv_mojibake
powershell -->|"利用する"| group_object
powershell -->|"利用する"| measure_object
group_object -->|"より先に行うべき"| measure_object
powershell -->|"利用する"| compare_object
powershell -->|"利用する"| hashtable_join
powershell -->|"利用する"| get_filehash
powershell -.->|"利用する"| importexcel_module
importexcel_module -->|"推奨される対応"| xlsx_output
importexcel_module -.->|"前提とする"| tls_1_2
excel_com_automation -.->|"用いるのは非推奨"| xlsx_output
excel_com_automation -.->|"原因になり得る"| excel_com_process_residue
release_com_object -->|"軽減する"| excel_com_process_residue
excel_com_automation -.->|"前提とする"| release_com_object
excel_com_automation -->|"用いるのは非推奨"| task_scheduler
概念間の関係(全19件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- PowerShellはImport-Csvを利用します。
- PowerShellはExport-Csvを利用します。
- Import-CsvはCSVの文字化けの原因になることがあります。
- Export-CsvはCSVの文字化けの原因になることがあります。
- -Encodingの明示指定はCSVの文字化けを軽減します。
- PowerShellはGroup-Objectを利用します。
- PowerShellはMeasure-Objectを利用します。
- Group-ObjectはMeasure-Objectより先に行うべきです。
- PowerShellはCompare-Objectを利用します。
- PowerShellはハッシュテーブルによる列の引き当て(結合)を利用します。
- PowerShellはGet-FileHashを利用します。
- PowerShellはImportExcelモジュールを利用します。
- ImportExcelモジュールはxlsx出力に対する本記事の推奨です。
- ImportExcelモジュールはTLS 1.2の明示的な有効化を前提とします。
- Excel COM自動化(Excel COM Interop)をxlsx出力に用いることは推奨されません。
- Excel COM自動化(Excel COM Interop)はEXCEL.EXEのプロセス残留の原因になることがあります。
- Marshal.ReleaseComObjectはEXCEL.EXEのプロセス残留を軽減します。
- Excel COM自動化(Excel COM Interop)はMarshal.ReleaseComObjectを前提とします。
- Excel COM自動化(Excel COM Interop)をタスクスケジューラの無人実行に用いることは推奨されません。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。