[英]Powershell script to copy specific text from excel & create xml files?
我有一个 excel 文件,其中有两列,两者相互链接,我还有一个 xml 文件,我想在其中提供这些列数据,并希望为每个组创建 1 xml,例如第一个 xml 将带走第 20 组作为 20.xml
xml 文件内容为 - 以粗体突出显示的目标区域为 xml,以更新其中的 excel 数据。
<?xml version="1.0" encoding="UTF-8"?>
<SingleAction>
<Title>Setting Data Group - **20**</Title>
<Relevance>(if exists property "in proxy agent context" then (not in proxy agent context) else true)</Relevance>
code..
code..
<Parameter Name="Data ID">**20**</Parameter>
<Settings>
lots of other settings
settings
setttings
..
..
<Target>
<Data1Column>**NameA**</Data1Column>
<Data1Column>**NameB**</Data1Column>
</Target>
要做的第一件事是将 Excel 文件保存为 .csv 文件(确保选择 .csv 以逗号分隔)。
那么你会想要一个 xml模板。 它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<SingleAction>
<Title>Setting Data Group - **##PARAMNAME##**</Title>
<Relevance>(if exists property "in proxy agent context" then (not in proxy agent context) else true)</Relevance>
code..
code..
<Parameter Name="Data ID">**##PARAMNAME##**</Parameter>
<Settings>
lots of other settings
settings
setttings
..
..
<Target>
##DATACOLUMNS##
</Target>
然后我们将用实际数据替换##PLACEHOLDERS##。 在此 powershell 脚本中,我假设标头Data1
和Data2
已更改为data1
和data2
。
$data = Import-Csv .\data.csv
$luTable = @{}
# Create Keys in Lookup Table
$data | % {
if (!$luTable.ContainsKey("$($_.data2)")) { $luTable["$($_.data2)"] = New-Object System.Collections.ArrayList }
}
$luTable.Keys | % {
$key = $_ # Store Key
$data | where data2 -Match $_ | select data1 | % {
$luTable[$key].Add($_.data1)
}
}
# Build XML Files
$luTable.Keys | % {
$key = $_
$filetext = gc ".\template.xml"
$filetext = $filetext.Replace("##PARAMNAME##", $key)
$targets = ""
$luTable[$key] | % {
$targets += "<DataColumn1>$($_)</DataColumn1>"
}
$filetext = $filetext.Replace("##DATACOLUMNS##", $targets)
sc -Path ".\$($key).xml" -Value $filetext
}
这应该够了吧!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.