管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

Excelで作成したCSVに二重引用符をつける(Powershell)

Excelで作ったCSVは、各項目が二重引用符(")で囲われません。
たまーに、二重引用符で囲われたCSVが必要になることがあるため、Powershellで対処してみました。

ヒントは自分の投稿でした

カンマで分割して、前後を「”」で囲って...みたいなことをせずにできないものか、と考えたときに、
そういえばPowershellでExport-CSVというのを使うと「”」で囲われたっけな...というのを思い出しました。

コードです

param(
[string]$fileName    # 処理対象ファイル名(フルパス)
)

# エラーがあった時点で処理終了
$ErrorActionPreference = "stop"

$parentDir = Split-Path -Parent $fileName
$fileNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($fileName);
$outputFileName = Join-Path $parentDir $fileNameWithoutExtension"_dquote.csv"

Import-Csv -Encoding Default $fileName |`
Export-Csv -Encoding Default -NoTypeInformation $outputFileName

実行例

PS C:\Users\hoge\Documents\Powershells> .\Excelで作成したCSVに二重引用符をつける.ps1 C:\Users\hoge\Desktop\csv1.csv

スクリーンショット

ExcelでCSVをつくる
f:id:ksk1130:20180221235419p:plain
エディタで開くと...各項目が二重引用符で囲われていない
f:id:ksk1130:20180221235420p:plain
自分で囲う
f:id:ksk1130:20180221235421p:plain
その後、Excelで編集すると...
f:id:ksk1130:20180221235422p:plain
やっぱり囲われない...
f:id:ksk1130:20180221235423p:plain
上記スクリプトを実行すると、二重引用符で囲われる
f:id:ksk1130:20180221235424p:plain