Genel yöntemleri aramak için extarnal module'u kullanarak this example'u genişletmeye çalışıyorum. Amacım yeni xls dosyası oluşturmak ve ona yazmak.Yeni Nesne, boş nesneyi döndürür
[Reflection.Assembly]::LoadWithPartialName("DocumentFormat.OpenXml") | Out-Null
[Reflection.Assembly]::LoadWithPartialName("DocumentFormat.OpenXml.Packaging")
[Reflection.Assembly]::LoadWithPartialName("DocumentFormat.OpenXml.Spreadsheet")
[Reflection.Assembly]::LoadWithPartialName("OpenXmlPowerTools")
Import-Module (join-path (Split-Path $MyInvocation.MyCommand.Path) "GenericMethods.psm1")
$document = [DocumentFormat.OpenXml.Packaging.SpreadsheetDocument]::Create("C:\Temp\text.xlsx", [DocumentFormat.OpenXml.SpreadsheetDocumentType]::Workbook)
$workbookPart = $document.AddWorkbookPart();
$workbookPart.Workbook = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Workbook
$worksheetPart = Invoke-GenericMethod -InputObject $workbookPart -MethodName AddNewPart -GenericType DocumentFormat.OpenXml.Packaging.WorksheetPart
$sheetData = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.SheetData
$worksheetPart.Worksheet = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Worksheet -ArgumentList $sheetData
[DocumentFormat.OpenXml.Spreadsheet.Sheets]$foo = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Sheets
Invoke-GenericMethod -InputObject $document.WorkbookPart.Workbook -MethodName AppendChild -GenericType DocumentFormat.OpenXml.Spreadsheet.Sheets -ArgumentList $foo
$document.Close()
sorun kodu
[DocumentFormat.OpenXml.Spreadsheet.Sheets]$foo = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Sheets
Invoke-GenericMethod -InputObject $document.WorkbookPart.Workbook -MethodName AppendChild -GenericType DocumentFormat.OpenXml.Spreadsheet.Sheets -ArgumentList $foo
bu parça hatasını Invoke-GenericMethod : No matching method was found
atar olmasıdır. Atarlar, New-Object
, Invoke-GenericMethod
işleviyle boş dizi olarak değerlendirilen bir şey oluşturduğundan. Yani modül hiçbir parametresi olmayan jenerik yöntemler arıyor. İlk aramanın Invoke-GenericMethod
numaralı telefona düzgün çalıştığını unutmayın.
Invoke-GenericMethod
-ArgumentList
parametresiyle nasıl aramalıyım?
'-ArgumentList (, $ foo)'? – PetSerAl
'Invoke-GenericMethod' yerleşik bir PowerShell komutu değildir. Daha fazla bilgi için [bu soru] bölümüne bakın (http://stackoverflow.com/q/18774889/1001100). – JamesQMurphy
@PetSerAl Çalışıldı. Ama nedenini anlayamıyorum. Ve şimdi boş nesne çağrılan yöntemle döndürülür. –