HOWTO · PowerShell

PowerShell を使用して CSV を Excel にエクスポートする方法

このチュートリアルでは、PowerShell を使用して CSV ファイルを Excel ファイルにエクスポートする方法を学びます。

CSV(カンマ区切り値)は、データを表形式で保存するプレーンテキストファイルです。カンマやセミコロンなどの他の区切り文字で区切られたデータのリストを含んでいます。

CSV ファイルには .csv 拡張子があり、Microsoft Excel などのスプレッドシートプログラムで表示できます。.xlsx 拡張子を持つファイルは Microsoft Excel ワークシートファイルです。

この記事では、PowerShell を使用して CSV ファイルを Excel にエクスポートする具体的な方法について説明しています。Excel COM オブジェクト、ImportExcel モジュール、PSExcel モジュールの 3つの異なる方法をカバーしており、各方法は異なるシナリオと要件に対応しており、独自の利点を提供します。

Excel COM オブジェクト PowerShell を使用して CSV ファイルを Excel ファイルにエクスポートする

Excel COM オブジェクトメソッドは、Windows 環境でのデータ変換やレポート作成に特に役立ちます。このアプローチは、CSV データをビジネスやデータ分析で広く使用されるよりユーザーフレンドリーな Excel 形式に自動変換するプロセスを自動化する必要がある人に最適です。

スクリプト:

# Define the CSV file path and the Excel file path
$csvPath = "C:\path\file.csv"
$excelPath = "C:\path\file.xlsx"

# Start Excel application
$excel = New-Object -ComObject excel.application
$workbook = $excel.Workbooks.Add()
$worksheet = $workbook.worksheets.Item(1)

# Import CSV data into the worksheet
$row = 1
Import-Csv $csvPath | ForEach-Object {
    $col = 1
    foreach ($value in $_.PSObject.Properties.Value) {
        $worksheet.Cells.Item($row, $col) = $value
        $col++
    }
    $row++
}

# Save and close Excel workbook
$workbook.SaveAs($excelPath)
$excel.Quit()

このスクリプトでは、ソース CSV ファイルと宛先 Excel ファイルのパスを定義することから始めます。次に、Excel アプリケーションインスタンスを初期化し、1つのワークシートを持つ新しいワークブックを追加します。

Import-Csv コマンドレットは CSV ファイルを読み取り、ForEach-Object を使用して各レコードを反復処理します。ループ内では、それぞれの値を Excel ワークシートの対応するセルに割り当てます。

CSV ファイルからすべてのデータをワークシートに入力した後、指定されたパスにワークブックを保存し、Excel アプリケーションを閉じます。

出力:

PowerShell を使用して CSV を Excel にエクスポート - 出力 1

Excel COM オブジェクト PowerShell を使用して CSV ファイルを Excel ファイルにエクスポートする

Excel COM オブジェクトメソッドは、Windows 環境でのデータ変換やレポート作成に特に役立ちます。このアプローチは、CSV データをビジネスやデータ分析で広く使用されるよりユーザーフレンドリーな Excel 形式に自動変換するプロセスを自動化する必要がある人に最適です。

最初に、ImportExcel モジュールをまだインストールしていない場合は、インストールする必要があります。

Install-Module -Name ImportExcel -Force -Scope CurrentUser

スクリプト:

# Install the ImportExcel module if not already installed
# Install-Module -Name ImportExcel -Scope CurrentUser

# Define the CSV and Excel file paths
$csvPath = "C:\path\file.csv"
$excelPath = "C:\path\file.xlsx"

# Import data from CSV and export to Excel
Import-Csv -Path $csvPath | Export-Excel -Path $excelPath

# Print completion message
Write-Host "CSV data has been exported to Excel at: $excelPath"

このスクリプトでは、最初に ImportExcel モジュールがインストールされているかを確認します。このモジュールは PowerShell にデフォルトで含まれていないため、Install-Module を使用して PowerShell ギャラリーからインストールする必要がある場合があります。

次に、ソース CSV ファイルと宛先 Excel ファイルのファイルパスを定義します。Import-Csv コマンドレットは CSV ファイルを読み取り、パイプライン(|)を使ってインポートされたデータを直接 Export-Excel コマンドレットに渡し、指定された場所に Excel ファイルを作成します。

このスクリプトはシンプルで効率的に設計されており、PowerShell スクリプトに不慣れな人でもアクセス可能です。PowerShell を使用して CSV から Excel 形式へのデータ変換の容易さを効果的に示しています。

出力:

PowerShell を使用して CSV を Excel にエクスポート - 出力 2

PSExcel PowerShell を使用して CSV ファイルを Excel ファイルにエクスポートする

PSExcel モジュールは、Excel がシステムにインストールされていなくても Excel ファイルと対話するために PowerShell の機能を活用します。これは、サーバーや自動化システムなど、Excel のインストールが実行できない環境で特に役立ちます。

PSExcel は、レポート生成、データ分析、データを Excel のようなより提示しやすくアクセスしやすい形式に変換するタスクで広く使用されています。

最初に、PSExcel モジュールをまだインストールしていない場合は、インストールする必要があります。

Install-Module -Name PSExcel -Force -Scope CurrentUser

スクリプト:

#Define the CSV and Excel file paths
$csvPath = "C:\path\file.csv"
$excelPath = "C:\path\file.xlsx"

# Import data from CSV
$csvData = Import-Csv -Path $csvPath

# Export data to Excel
$csvData | Export-Excel -Path $excelPath

# Print completion message
Write-Host "CSV data has been exported to Excel at: $excelPath"

このスクリプトでは、PSExcel モジュールがインストールされていることを確認することから始めます。これは PowerShell にデフォルトで含まれておらず、PowerShell ギャラリーからインストールできます。

次に、ソース CSV ファイルと宛先 Excel ファイルのパスを定義します。Import-Csv コマンドレットを使用して CSV ファイルを変数に読み込みます。

このインポートされたデータは、指定された場所に Excel ファイルを作成する Export-Excel コマンドレットにパイプされます。

出力:

PowerShell を使用して CSV を Excel にエクスポート - 出力 3

結論

この PowerShell を使用して CSV ファイルを Excel にエクスポートする包括的なガイドは、データ変換タスクを処理する際の PowerShell の柔軟性と強力さを示しています。探求された各方法 - Excel COM オブジェクト、ImportExcel モジュール、および PSExcel モジュール - はユニークな利点を提供し、異なる環境と要件に対応します。

Excel COM オブジェクトは、Windows 環境で Excel との直接的なやり取りのための堅牢な選択肢であり、複雑なデータ操作タスクに最適です。ImportExcel および PSExcel モジュールは、Excel ソフトウェアがなくても Excel ファイルを扱うために PowerShell の機能を拡張する代替のアプローチを提供します。

これらの方法は、PowerShell の多様性を強調するだけでなく、データ変換タスクの自動化と簡素化のための実用的なソリューションも提供します。PowerShell スクリプトに不慣れな初心者でも、経験豊富なプロフェッショナルでも、これらの方法はさまざまなシナリオにおけるデータ処理とレポート機能を向上させるための貴重なツールを提供します。