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関連

    関数一覧(Excel 2013 Customer Preview)

    関数の挿入ダイアログから抽出したExcel 2013 Customer…

  2. アイコン一覧

    Office 365アイコン(imageMso)一覧(X,Y,Z)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(G)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. Office アドイン

    作業ウィンドウのアプリをWord 2013にも対応させる。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  5. Office関連

    [Excel VBA]PrintPreview後に印刷するとCtrl+;の日付形式が変わる?

    MSDNフォーラムで面白い質問がありました。・Excel …

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP