PowerShell で CSV 出力するのは Export-Csv で簡単に出来るのですが、出力された CSV を Excel でそのまま開くと、数値タイプになってリーディングゼロが欠落したり、日付タイプになって日付フォーマットが消えたりと色々困る事があります
この問題を回避するには、データをデリミタ(区切り)をタブにした TSV 出力して、全セルを文字タイプにした Excel ワークシートにテキストエディタで開いた TSV データをコピペする手があります
Windows PowerShell 5.x では、「-Delimiter "`t"」を指定してデリミタを TAB に出力すれば TSV にはなるのですが、データがダブルコーテーション囲みになるので、Excel にペーストする前にダブルコーテーションを消す手間が必要です
$datas | Export-Csv -Path .\Test.tsv -Encoding oem -Delimiter "`t" |
Windows PowerShell 5.x では、このダブルコーテーションを消すコードを別途書く必要があったのですが、PowerShell 7 以降は「-UseQuotes」オプションでダブルクォーテーションの出力を抑制することが出来るようになっています
UseQuotes オプション
Never | 引用符で囲まない |
Always | すべてを引用符で囲む (既定の動作) |
AsNeeded | 区切り文字、二重引用符、または改行文字を含む引用符フィールドのみ |
Never オプションを指定すると、ダブルコーテーションが出力されないので、加工無しでダブルコーテーション囲みの無い TSV を出力する事が出来ます
$datas | Export-Csv -Path .\Test.tsv -Encoding oem -Delimiter "`t" -UseQuotes Never |
改行とか含まれるデータがある場合は AsNeeded
オプションを指定する必要がありそうですが、試していません mm
(必要がある方は期待動作をするか確認してからご使用ください)
Copyright © MURA All rights reserved.