【问题标题】:PowerShell read Excel cells in a array and create xml doument?PowerShell 读取数组中的 Excel 单元格并创建 xml 文档?
【发布时间】:2018-05-27 09:26:26
【问题描述】:

我使用一个数组来读取 Excel 内容,它应该用于创建一个 xml 文件,但是在将数组值分配给 write xml 语句时遇到了麻烦。 数组代码:

 # Parse Excel columns A and B and store it in array "$headerInit"   
 for ($j=1; $j -le $rowMax-1; $j++)
 {
    $Obj =  New-Object Psobject -Property @{
        Value = $ws.Cells.Item($j,2).text
        Header = $ws.Cells.Item($j,1).text
        No = $j
    }

    $DataArray.add($obj) # Visualize the array content
 }

    $DataArray | Out-Gridview

数组内容示例:

No   Header   Value
...
12   Address   1234,0x3030
...

这里是创建 xml 文档的代码摘录(值“1234”和“0x3030”是手动插入的,但应该从数组 $DataArray 中分配):

...
# Write node <address1>
$xmlWriter.WriteStartElement('address1')
$xmlWriter.WriteAttributeString('address','1234')
$xmlWriter.WriteEndElement() # <-- Closing the node <address1>

# Write node <address2>
$xmlWriter.WriteStartElement('address2')
$xmlWriter.WriteAttributeString('address','0x3030')
$xmlWriter.WriteEndElement() # <-- Closing the node <address2>
...

如何从 create xml 语句中的数组 $DataArray, Header "Address" 中分配 2 个值,除以逗号 "1234,0x3030"?任何帮助表示赞赏 - 谢谢。

【问题讨论】:

  • 您已经考虑过使用.Split(',') 对吗?
  • 感谢您的评论,但我是 Powershell 的新手,不知道如何将左右值存储在单独的变量中?
  • 你是如何循环访问$DataArray的?您还没有包含实际构建 XML 的代码,很难猜测您是如何引用它的值的。

标签: arrays xml excel powershell


【解决方案1】:

同时我已经解决了用逗号分隔两个值的问题。 解决办法是:

$a,$b = $DataArray[12].Value.split(',')

是否有任何简单的方法可以将值直接分配给 write xml 语句而无需额外的变量?

【讨论】:

    【解决方案2】:

    正如您从我的建议中发现的那样,您可以使用Split 来分隔您想要的两个值:

    $addressLeft,$addressRight = $DataArray[12].Value.Split(',')
    

    您也可以直接引用拆分的单独部分,因为Split 创建了一个数组,您可以使用索引号来访问每个元素:

    $DataArray[12].Value.split(',')[0]
    $DataArray[12].Value.split(',')[1]
    

    另一种选择是在构建$DataArray时将值拆分为两个属性:

    $Obj =  New-Object Psobject -Property @{
        Value = $ws.Cells.Item($j,2).text
        addressLeft = $ws.Cells.Item($j,2).text.Split(',')[0]
        addressRight = $ws.Cells.Item($j,2).text.Split(',')[1]
        Header = $ws.Cells.Item($j,1).text
        No = $j
    }
    

    我保留了原始的 Value 属性,但如果您只想要拆分值,则可以将其删除。

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      相关资源
      最近更新 更多