xml - 解析 XML 并输出到 Excel

标签 xml excel powershell

我正在制作一个脚本,它将解析 2,000 个 XML 文件以获取数据,然后将其输出到 Excel 文件。
这是我到目前为止所拥有的:

#Get XML File
$path = Get-ChildItem C:\Users\bcamareno\Desktop\xml\xml

#Start Excel
$xl=New-Object -ComObject "Excel.Application"
$wb=$xl.Workbooks.Add()
$ws=$wb.ActiveSheet

$cells=$ws.Cells
$cells.item(1,1)="HDD Report"
$cells.item(1,1).font.bold=$True
$cells.item(1,1).font.size=18

#Rows & Cols
$row=3
$col=1
$A=4
$B=4
$C=4
$D=1
$E=2
$F=3

#column headings
"Server","Disk0","Disk1","Disk2","Disk3","Disk4","Disk5","Disk6","Disk7" | foreach {
    $cells.item($row,$col)=$_
    $cells.item($row,$col).font.bold=$True
    $col++
}

#Site Code
foreach ($item in $Path) {
$cells.item($A,$D)= $item -replace "_pdisk.xml",""
      $A++
}

#Grab ProductID
foreach ($item in $Path) {
    [xml]$content = Get-Content "c:\Users\bcamareno\Desktop\xml\xml\$item"
    $try= $Content.SelectNodes('//ProductID') | select "#Text"
    $cells.item($B,$E)= $try -replace "@{#text=","" -replace "}",""
    $B,$E++
}

$xl.Visible=$True

但是当我运行它时,数据出现错误,似乎它只是解析最后一个文件然后将结果添加到单元格中。

如果需要,我可以添加 XML。

最佳答案

$B永远不会增加,因此您永远不会在电子表格中添加行 - 只是将同一行覆盖 2000 次。

我还建议您使用比单个字母更具描述性的变量名称。

另外,更改此行:

[xml]$content = Get-Content "c:\Users\bcamareno\Desktop\xml\xml\$item"

对此:
[xml]$content = Get-Content $item.FullName

这样,当您更改 XML 文件的位置时,您只需执行一次(当您调用 Get-ChildItem 时)并且不会因为忘记更新该路径的所有实例而在 2 小时内追逐“错误” .

关于xml - 解析 XML 并输出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557864/

相关文章:

powershell - 如何通过 Windows PowerShell 的组策略 cmdlet 获取/设置/更新注册表值?

arrays - Powershell v4 Invoke-RestMethod 正文发送 System.Object

android - 删除 RecyclerView 中 CardView 之间的多余空格

xml - XSLT:文档分析:如何在文档中输出唯一路径?

java - 双重转义 XML 实体

excel - 创建表作为选择位置 - 使用当前数据库编译错误

java - 4-4-5 基于Java 8代码的日历方法

java - 在Spring元素中添加css和js

excel - 在 VF 页面中导出 Excel - 使用动态图像 URL 时图像未显示

events - 是否可以将事件附加到 PSObject?