Я пытаюсь добавить TXT в XLSX на основе шаблонов. Если это соответствует, это должно добавить. Это работает, когда я явно определяю столбцы и элементы листа.
Это то, что я пробовал до сих пор. Я получаю следующую ошибку: HRESULT: 0x800A03E C. Что здесь не так?
$fileContent = @'
Node: ABC
Name: PC
Cluster: HS1
Node: XZZ
Name: CC
Cluster: HS2
Node: XYZ
Name: DD
Cluster: HS3
'@
$Testbestand = $fileContent.Split( [System.Environment]::NewLine,
[System.StringSplitOptions]::RemoveEmptyEntries )
$linieIdLast = ''
$linieTemplate = [ordered]@{}
foreach ( $linie in $Testbestand ) {
$linieId, $linieVal = $linie -split ":\s*",2
if ( $linieId -in $linieTemplate.Keys ) {
break
} else {
$linieIdLast = $linieId
$linieTemplate.Add( $linieId, $Null )
}
}
$linieComb = New-Object -TypeName PSCustomObject -Property $linieTemplate
$liniesAll = foreach ( $linie in $Testbestand ) {
$linieId, $linieVal = $linie -split ":\s*",2
$linieComb.$linieId = $linieVal.Trim()
if ( $linieId -eq $linieIdLast ) {
$linieComb
$linieComb = New-Object -TypeName PSCustomObject -Property $linieTemplate
}
}
$TargetFile = targetfile
$sheetName = Sheet
$objExcel = New-Object -ComObject Excel.Application
$workBook = $objExcel.Workbooks.Open($TargetFile)
$sheet = $workBook.sheets.item($sheetName)
$column = ($sheet.Columns.Find($linieKey))
$row = 33
$liniesAll | ForEach-Object {
foreach ( $linieKey in $linieTemplate.Keys )
{
$sheet.cells.item($row, $column).value = $_.$linieKey
$row++
}
}
$workBook.Save()
$objExcel.Quit()
Я получаю ошибку:
Exception from HRESULT: 0x800A03EC
At line:48 char:8
+ $sheet.cells.item($row, $column).value = $_.$linieKey
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException