Search

2018/03/21

PowershellでExcelの作成、Excel無しでもOK:Import-Excel

PowershellでExcelデータの作成とか編集とかは
下記の感じでCOMコンポーネントの例がたくさんあります。
WPS Officeのメリット:COMコンポーネントがPowershellで使える

でも、COMコンポーネントは処理がとても遅いので、
.Netを使ってxlsxオブジェクトを処理すると早いです。

その中の一つの方法が「ImportExcel」を使う方法らしいです。
ライセンスはApache Licenseです。
インストールも簡単にできると思います。
ImportExcel
https://github.com/dfinke/ImportExcel

ClosedXMLのようなものでも同じことができると思いますので、
状況に合わせて使うと便利だと思います。
PowerShell で ClosedXML を使って Excel ファイルを作成する @miyamiya様


----------------------
追記)
※.NETのDLLを使ってもいいかも。dllはNuGetで入手する。
※ImportExcelはEPPLUSを使ってます。
読むだけ:ExcelDataReader  xls,xlsx,csvに対応
書き込み:EPPLUS  xlsxのみ対応
下記のページを参照。
ExcelDataReaderでxlsとxlsxとcsvを読み込み:powershellでも動くよ


コマンドレットで使いたい! > ImportExcel
DLLで読み込みだけしたい! > ExcelDataReader
DLLでXLSXを読み書きしたい! > EPPLUS
----------------------


【機能の比較】
■COMコンポーネント
メリット:何でもできる!
デメリット:処理が遅い、有料ソフトが必要

■ImportExcel
メリット:処理が速い!Apache Licenseで無料で使える
デメリット:機能が限定される



下記にImportExcelのインストールとかんたんな使い方を書いておきます。
詳しい検証はしてません。

たぶん、AddPictureとかで画像を貼り付けるとかできない感じです。
でも、詳しくドキュメントを読んでいないので分かりません。

------------------


【インストールの手順】
■管理者でPowershellを起動
■「Install-Module ImportExcel」を入力
■Nugetをインストールするか聞いてくるので「Y」で進む
■信頼されていないリポトリジも聞いてくるので「Y」で進む
■念の為、「Find-Module ImportExcel」で確認する


【コマンド一覧を表示】
■「Get-Command -module ExcelImport」でコマンド一覧を表示してみる
長いので最下部に記載しました。

【使い方とかサンプルの表示】
■「Get-Help Import-Excel」で表示してみる
まずは Import-Excel、Export-Excelを調べてみましょう。

Import-Excel: Excelのデータをロード
Export-Excel: オブジェクトをExcelとして出力
Open-ExcelPackage: xlsxをオブジェクトとしてロード

Import-Excelのヘルプの例はこんな感じ。
「Import-Excel c:\tmp\text.xlsx」でロードするよ、みたいな感じで。
----------
名前
    Import-Excel

概要
    Create custom objects from the rows in an Excel worksheet.

構文
    Import-Excel [-Path] <String> [[-WorksheetName] <String>] [-StartRow <Int32>] [-DataOnly] [-Password <String>] [<Co
    mmonParameters>]

・・・以下省略
----------

【チュートリアルとかサンプル】
githubのページの下の方で紹介しています。
Examplesで実例もコピペで使えます。


【かんたんな使い方】
データをメモリに読み込めばあとはPowershellで処理する。
出力はExport-Excelにパイプラインで渡す感じで。


■9x1でxlsxに出力 ※-noheaderは項目名無し
@(1,2,3,4,5,6,7,8,9)  | Export-excel c:\tmp\test.xlsx -noheader;


■3x3でxlsxに出力
 @(
New-PSItem aa bb cc;
New-PSItem 11 22 33;
New-PSItem 77 88 99;
) | Export-excel c:\tmp\test.xlsx -noheader;


■値のみインポート ※最上段は項目名
$xl = Import-Excel c:\tmp\test.xlsx


■値のみインポート ※最上段もデータとする場合
$xl = Import-Excel c:\tmp\test.xlsx -dataonly

■値の表示 ※プロパティで指定
$xl | select P1

P1
-
1
2
3

■値を処理したあとの出力
$xl | Export-Excel c:\tmp\test.xlsx



■書式などを含んむときのインポート
$xlpkg = Open-ExcelPackage c:\tmp\test.xlsx;

■Packageの値の操作 ※配列で指定
$xlpkg.Workbook.Worksheet[1].Cells[1,1].value =4071;
$xlpkg.Workbook.Worksheet[1].Cells[1,2].text ="aaaa";
$xlpkg.Workbook.Worksheet[1].GetValue(1,2);


■値を処理したあとの出力と破棄
$xlpkg.save();
$xlpkg.dispose();






【コマンド一覧】
■「Get-Help xxx」で詳しい使い方が表示されます。

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Use-ExcelData                                      4.0.10     importexcel
Function        Add-ConditionalFormatting                          4.0.10     importexcel
Function        Add-WorkSheet                                      4.0.10     importexcel
Function        BarChart                                           4.0.10     importexcel
Function        Close-ExcelPackage                                 4.0.10     importexcel
Function        ColorCompletion                                    4.0.10     importexcel
Function        ColumnChart                                        4.0.10     importexcel
Function        ConvertFrom-ExcelData                              4.0.10     importexcel
Function        ConvertFrom-ExcelSheet                             4.0.10     importexcel
Function        ConvertFrom-ExcelToSQLInsert                       4.0.10     importexcel
Function        ConvertTo-ExcelXlsx                                4.0.10     importexcel
Function        Convert-XlRangeToImage                             4.0.10     importexcel
Function        Copy-ExcelWorkSheet                                4.0.10     importexcel
Function        DoChart                                            4.0.10     importexcel
Function        Export-Excel                                       4.0.10     importexcel
Function        Export-ExcelSheet                                  4.0.10     importexcel
Function        Export-MultipleExcelSheets                         4.0.10     importexcel
Function        Get-ExcelColumnName                                4.0.10     importexcel
Function        Get-ExcelSheetInfo                                 4.0.10     importexcel
Function        Get-ExcelWorkbookInfo                              4.0.10     importexcel
Function        Get-HtmlTable                                      4.0.10     importexcel
Function        Get-Range                                          4.0.10     importexcel
Function        Get-XYRange                                        4.0.10     importexcel
Function        Import-Excel                                       4.0.10     importexcel
Function        Import-Html                                        4.0.10     importexcel
Function        Import-UPS                                         4.0.10     importexcel
Function        Import-USPS                                        4.0.10     importexcel
Function        Invoke-AllTests                                    4.0.10     importexcel
Function        Invoke-Sum                                         4.0.10     importexcel
Function        LineChart                                          4.0.10     importexcel
Function        New-ConditionalFormattingIconSet                   4.0.10     importexcel
Function        New-ConditionalText                                4.0.10     importexcel
Function        New-ExcelChart                                     4.0.10     importexcel
Function        New-PivotTableDefinition                           4.0.10     importexcel
Function        New-Plot                                           4.0.10     importexcel
Function        New-PSItem                                         4.0.10     importexcel
Function        Open-ExcelPackage                                  4.0.10     importexcel
Function        PieChart                                           4.0.10     importexcel
Function        Pivot                                              4.0.10     importexcel
Function        Send-SQLDataToExcel                                4.0.10     importexcel
Function        Set-CellStyle                                      4.0.10     importexcel
Function        Set-Column                                         4.0.10     importexcel
Function        Set-Format                                         4.0.10     importexcel
Function        Set-Row                                            4.0.10     importexcel
Function        Test-Boolean                                       4.0.10     importexcel
Function        Test-Date                                          4.0.10     importexcel
Function        Test-Integer                                       4.0.10     importexcel
Function        Test-Number                                        4.0.10     importexcel
Function        Test-String                                        4.0.10     importexcel
Function        Update-FirstObjectProperties                       4.0.10     importexcel



[

0 件のコメント:

コメントを投稿