配列からXLSファイルを作成する関数を作成しました。すべてがうまく機能しますが、配列からヘッダーを抽出するときに問題が発生します。
私のヘッダーは抽出後にアルファベット順に整理されていますが、入力配列と同じ順序に保ちたいと思います。
function DoTheMagicExcel {
[cmdletbinding()]
Param(
<# Array to work on #>
[Parameter( Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[Array]$MyArray,
<# Its Excel Sheet name #>
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[alias('Sheet')]
[string]$MySheetName,
<# Excel file name #>
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[ValidatePattern("\.(csv|xls)$")]
[alias('XlsFile')]
[string]$MyExcelFile
)
Begin {
<# Init them all #>
$excel = new-object -comobject Excel.Application
$excel.visible = $False
$excel.DisplayAlerts = $False
$XlsAlreadyExist = $False
if (Test-Path $MyExcelFile) {
Write-Output "Fichier Excel deja existant"
$XlsAlreadyExist = $true
$workbook = $excel.Workbooks.open("$PSScriptRoot\$MyExcelFile")
$workbook.Worksheets.Add() | Out-Null
$workbook.WorkSheets.item(1).Name = $MySheetName
$MySheet = $workbook.Worksheets.Item($MySheetName)
}
else {
$workbook = $excel.Workbooks.Add()
$workbook.WorkSheets.item(1).Name = $MySheetName
$MySheet = $workbook.Worksheets.Item($MySheetName)
}
$MyHeadercolumn = 1
$StartRow = 2
}
Process {
$MyArrayHeader = $MyArray | Get-member -MemberType 'NoteProperty' | Select-Object -ExpandProperty 'Name'
foreach ($header in $MyArrayHeader) {
$MySheet.cells.item(1, $MyHeadercolumn).font.bold = $true
$MySheet.cells.item(1, $MyHeadercolumn) = $header
$MyHeadercolumn++
}
foreach ($ThisRow in $MyArray) { ......
私はこれを意味します
$AllBcksummary[1] |ft -AutoSize
Server RG Environment Availibility Vault Status Regle Dernier Backup Type
------- -- ----------- ------------ ------ ------ ----- -------------- ----
SEFRAPB0106 RG_AXL production NOT SET backup Healthy Policy14512-BDay-Prod 24/01/2018 19:22:15 AppConsistent
$MyArrayHeader = $AllBcksummary | Get-member -MemberType 'NoteProperty' | Select-Object -ExpandProperty 'Name'
$MyArrayHeader |ft -AutoSize
Availibility
Coffre
Dernier Backup
Environment
Regle
RG
Serveur
Status
Type
その後、Excelを作成すると、元の順序が保持されなくなります
foreach ($header in $MyArrayHeader) {
$MySheet.cells.item(1, $MyHeadercolumn).font.bold = $true
$MySheet.cells.item(1, $MyHeadercolumn) = $header
$MyHeadercolumn++
}
あなたがアイデアを持っているなら... :)ありがとう
これでうまくいくはずです:)
$AllBcksummary.psobject.properties | select Name
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加