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を立ち上げるのは重いからイヤだ!」という場合には、サードパーティー製のライブラリを使用することを検討してみてはいかがでしょうか。

関連記事

関連記事

  1. Office アドイン

    [Office用アプリ]Excel 2013の操作を動画で学べるアプリ「Excel video tu…

    Excel 2013の操作を動画で学べるアプリがMicrosoftから…

  2. Office関連

    Wordの自動実行マクロ

    たまたま使用する機会があったのでメモ書き程度に情報を残しておきます。…

  3. Office関連

    PhpSpreadsheetを使ってPHPからExcelファイルを出力してみる。

    一年半ほど前、「PHPWord」を使ってPHPからWordファイルを出…

  4. Office関連

    オデッセイ コミュニケーションズ主催のExcel VBA入門セミナーに参加しました。

    今月19日に開催されたオデッセイ コミュニケーションズさん主催の「Ex…

  5. Office関連

    未読アイテムの件数を取得するOutlookマクロ

    「Outlook 未読 件数 マクロ」といったキーワード検索でのアクセ…

  6. アイコン一覧

    Office 2013 アイコン一覧(W)

    ・Office 2013 アイコン一覧 NUM…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP