EPPlusを使用してプロパティ値に基づいて範囲内のすべてのセルを検索したいとします。既存のスプレッドシートに太字のテキストを含むすべてのセルを見つける必要があるとします。私は、設定可能なプロパティのパラメータを受け入れる関数を作成する必要がありますが、私は変数に格納されたプロパティを使用して問題がないよ:これらの作業のPowershell:変数に格納されるプロパティ
$cellobject = $ws.cells[1,1,10,10]
$properties = 'Style.Font.Bold'
$cellobject.$properties
$cellobject.{$properties}
$cellobject.($properties)
$cellobject."$properties"
なしに、コール深度のオーバーフローを引き起こします。
この方法ではうまくいかない場合、私は使用できるライブラリに何かがありますか?
編集:私はHanShotFirstが提供する概念と機能を更新し、最終的な解決策を表示するには...
function Get-CellObject($ExcelSheet,[string]$PropertyString,[regex]$Value){
#First you have to get the last row with text,
#solution for that is not provided here...
$Row = Get-LastUsedRow -ExcelSheet $ExcelSheet -Dimension $true
while($Row -gt 0){
$range = $ExcelSheet.Cells[$Row, 1, $Row, $ExcelSheet.Dimension.End.Column]
foreach($cellObject in $range){
if($PropertyString -like '*.*'){
$PropertyArr = $PropertyString.Split('.')
$thisObject = $cellObject
foreach($Property in $PropertyArr){
$thisObject = $thisObject.$Property
if($thisObject -match $Value){
$cellObject
}
}
}
else{
if($cellObject.$PropertyString -match $Value){
$cellObject
}
}
}
$Row--
}
}
#The ExcelSheet parameter takes a worksheet object
Get-CellObject -ExcelSheet $ws -Property 'Style.Font.Bold' -Value 'True'
あなたは '$のcellobject.properties'を試してみましたが、次のとおりです。これは、同じ結果を生成する必要がありますか? – Moerwald
@Moerwaldはい、私は試しました。しかし、ポイントは、プロパティをプロパティ内で設定可能にすることです。そのため、変数にプロパティを格納する必要があります。それは理にかなっていますか? – Mack
問題は文字列$ propertiesのピリオドのようです。 – Mack