Office関連

Excelを使わずにCSVからExcelファイルに変換するPowerShellコード

CSVファイルからExcelファイルに変換する処理を自動化したい、Excelが使用できる環境であれば、VBAやVBScriptを使用すれば比較的簡単に処理できますが、Excelが無い環境ではどうすれば良いか?

今回は、下記記事でも紹介している「EPPlus」を使って、Excelを使わずにCSVからExcelファイルに変換するスクリプトを紹介します。

Excelを使わずにCSVからExcelファイルに変換するPowerShellコード

同様のライブラリ「ClosedXML」もありますが、今回はEPPlusを使用します。
事前にNuGetからファイル(EPPlus.dll)をインストールしてください。

$csv_path = "C:\Test\SampleCSV.csv" #CSVファイルのパス

[void][System.Reflection.Assembly]::LoadFile("C:\System\EPPlus\EPPlus.dll") #DLL読み込み

#フォーマット設定
$format = New-Object OfficeOpenXml.ExcelTextFormat
$format.Encoding = [System.Text.Encoding]::GetEncoding("Shift_JIS") #CSVファイルの文字コード指定
$format.Delimiter = ',' #区切り文字
$format.TextQualifier = '"' #囲み文字
$locale = [System.Threading.Thread]::CurrentThread.CurrentCulture.ToString()
$ci = New-Object -TypeName System.Globalization.CultureInfo -ArgumentList $locale
$ci.NumberFormat.NumberDecimalSeparator = ',' #桁区切り文字
$format.Culture = $ci

#CSV読込
$package = New-Object OfficeOpenXml.ExcelPackage
$sheet = $package.Workbook.Worksheets.Add('Sheet1')
$sheet.Cells.Style.Font.Name = "MS Pゴシック"
$sheet.Column(4).Style.Numberformat.Format = "#,##0_ " #数値列の書式設定
$sheet.Column(5).Style.Numberformat.Format = "yyyy/mm/dd" #日付列の書式設定
$in_fi = New-Object -TypeName System.IO.FileInfo -ArgumentList $csv_path
[void]$sheet.Cells["A1"].LoadFromText($in_fi, $format)

#ExcelファイルをCSVファイルと同じフォルダに出力
$xlsx_path = [System.IO.Path]::Combine(
  [System.IO.Path]::GetDirectoryName($csv_path),
  [System.IO.Path]::GetFileNameWithoutExtension($csv_path) + ".xlsx")
$out_fi = New-Object -TypeName System.IO.FileInfo -ArgumentList $xlsx_path
$package.SaveAs($out_fi)

$package.Dispose()

上記コードを実行すると、下図のようなCSVファイルが

下図のようなExcelファイルに変換されます。

数値列や日付列の番号を決め打ちしているため、そのあたりは対象ファイルによって変更する必要がありますが、EPPlusはフォントも含めて細かくスタイルを設定することができます。

また、コメントで記載している通り、CSVファイルの文字コードや区切り文字、囲み文字の指定もできます。

正直、Excelを使った方が手っ取り早いとは思いますが、「いちいちExcelを立ち上げるのは重いからイヤだ!」という場合には、サードパーティー製のライブラリを使用することを検討してみてはいかがでしょうか。

関連記事

【2019年6月版】SeleniumBasicでMicrosoft Edgeを操作してみました。前のページ

【2019年6月版】Excel カスタム関数(Excel Custom functions)の紹介次のページ

関連記事

  1. Office関連

    64ビット版OfficeでURLエンコード処理ができない?

    2011/12/28 追記:関連記事として「文字コードを指定してU…

  2. Office関連

    [Office]アイコンの検索機能が超便利!

    ※ 下記情報はInsider版のOfficeを元にしています。バージョ…

  3. Office関連

    VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。

    「VBA ファイル ダウンロード」といったキーワード検索でのアクセスが…

  4. Office関連

    セル内にあるブックマークをカウントするWordマクロ

    Twitterを眺めていたら下記ツイートを発見しました。【Wo…

  5. Office関連

    Office 2019のインストール方法

    下記ニュースサイトにある通り、永続ライセンス版のOffice 2019…

  6. Office関連

    手軽に参照設定するためのVBAアドイン

    thom氏のブログで面白い記事がありました。・VBA 参照…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP