2017-03-16 53 views
1
<properties> 
<entry key="type">exSafe:Nocontract</entry> 
<entry key="aspects">cm:version,cm:title,cm:own,cm:author</entry> 
<entry key="cm:creator">1122334455</entry> 
<entry key="cm:autoVersion">true</entry> 
<entry key="cm:title">XXXXXXXXXXXXXXX</entry> 
<entry key="cm:modifier">1122334455</entry> 
<entry key="cm:created">2013-07-28T08:30:51.000+01:00</entry> 
<entry key="gwSafe:contractCustVend">XXXXXXXXXXXXXXXXXXX999</entry> 
</properties> 

我有下面的XML文件,我想通过PowerShell将它们转换成Excel文件,任何人都可以帮助我吗?用Powershell将XML转换为Excel

这是我到目前为止有:

[xml]$inputFile = Get-Content "k1.xml" 
#export xml as csv 
$inputFile.Sites.ChildNodes | Export-Csv "k1.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8 
+0

等都不是剧本创作服务。需要自己的努力来获得帮助。您能否向我们提供您已经尝试过的代码样本?我可以给自己编写脚本:解析一个XML,你可以在Powershell中使用[xml]类型。要导出到Excel,您可以连接Excel COM对象。我还注意到:您的XML示例不完整,Properties元素未关闭。 – bluuf

+0

首先,我是Poweshell的新手,第二,我发布我的问题,一旦我没有用自己的脚本来完成。不管怎么说,多谢拉! '[xml] $ inputFile = Get-Content“k1.xml” #export xml as csv $ inputFile.Sites.ChildNodes | Export-Csv“k1.csv”-NoTypeInformation -Delimiter:“;” -Encoding:UTF8'即使我试图将XML文件转换为CSV文件,但这并不起作用。 – Tuhin

+0

欢迎来到Tuhin网站,我已经为你更新了你的问题,包括你的代码片断,将来总是包含这些内容,这样我们就可以看到你的尝试/失败 - 这将帮助你变得更好,并学习其他编码方式电源外壳。您可以参考此网站以了解如何提出良好问题:https://stackoverflow.com/help/how-to-ask –

回答

2

我写了一个小样本,让你开始。这包含基本逻辑。 我不包括代码以添加标题(因为这是很微不足道的完成,这也令人不满意自己动手​​做)

[xml]$XML = @' 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 
<entry key="type">exSafe:Nocontract</entry> 
<entry key="aspects">cm:version,cm:title,cm:own,cm:author</entry> 
<entry key="cm:creator">1122334455</entry> 
<entry key="cm:autoVersion">true</entry> 
<entry key="cm:title">XXXXXXXXXXXXXXX</entry> 
<entry key="cm:modifier">1122334455</entry> 
<entry key="cm:created">2013-07-28T08:30:51.000+01:00</entry> 
<entry key="gwSafe:contractCustVend">XXXXXXXXXXXXXXXXXXX999</entry> 
</properties> 
'@ 

## Create Excel COM Object 
$excel = New-Object -ComObject Excel.Application 
# Set the sheet to visible so you can actually see it (for testing purposes) 
$excel.Visible = $true 
# Create a workbook 
$workbook = $excel.Workbooks.Add() 
# Get sheet 1 
$sheet = $workbook.Worksheets.Item(1) 
# Set a counter 
$x = 1; 
# here we loop through the XML data and add this to the excel sheet 
foreach ($entry in $XML.properties.entry) 
    { 
     $sheet.Cells.Item($x,1) = $entry.Key 
     $sheet.Cells.Item($x,2) = $entry.'#text' 
     $x++ 
    }