適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

【PowerShell】CSVにダブルクォーテーションを簡単に付ける

ExcelでCSV形式で保存したファイルをダブルクォーテーション付きに変換するための備忘録です。

検証した環境

Windows10
Excel 2019
WindowsPowerShell 5.1

ExcelのワークシートをCSV形式を指定して保存することができるが・・・

Excelブックを保存するときにファイルの種類をCSV(コンマ区切り)とすることでアクティブなシートをCSV形式のテキストファイルとして保存することができます。

保存されるときは基本的にプレーンな状態で、各値がカンマで区切られるだけです(カンマが含まれるセルの値はダブルクォーテーションで囲まれますが)。

これはこれで何かと便利なのですが、たまに全項目をダブルクォーテーションで囲ったCSVを用意しなければならないことがあります。

そんなときはPowerShellを経由すると簡単にダブルクォーテーションを付与することができます。

PowerShellを経由してCSVの項目をダブルクォーテーションで囲む

一度ExcelをCSV形式で保存し、保存したCSVファイルに対してImport-Csvコマンドレットで読込み、Export-CSVコマンドレットでCSVファイルとして出力すると、カンマ区切りになります。

下記の例は、ダブルクォーテーション無しのC:\plane.csv ファイルをダブルクォーテーション付きの C:\addquote.csv として保存する例です。

 
Import-Csv -Path "C:\plane.csv" -Encoding Default|Export-csv -Path 'C:\addquote.csv' -Encoding Default  -NoTypeInformation

PowerShell 7.2以降ならもう少し柔軟に設定可能

ここでは触れませんが、PowerShell Coreの7.2以降なら -QuoteFields や -UseQuotes といったオプションが追加され、ダブルクォーテーションの囲み方を柔軟に設定できます。

Export-Csvコマンドレットのマイクロソフトドキュメントの例に詳しく書いてあります。

参考

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/export-csv?view=powershell-7.2