下記の感じで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
※.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にパイプラインで渡す感じで。
@(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 件のコメント:
コメントを投稿