0

我目前正在尝试编写一个将读取 Excel 文件并生成 HTML 片段的 Powershell 脚本。我正在使用它为仪表板生成 HTML,其想法是无论由于嵌套而在电子表格上放置了哪些新 div,都不必更改脚本。我真的不知道从哪里开始。我的原始脚本如下所示,但每次将新列或 div 放入文件时都必须对其进行编辑,这就是为什么我不能制作 CSV 文件的原因?

new-item registration.html -type file
add-content registration.html "<html><head></head><body><div id='registration'>"
new-item bill.html -type file
add-content bill.html "<html><head></head><body><div id='bill'>"
new-item financial.html -type file
add-content financial.html "<html><head></head><body><div id='financial'>"
$csv=(import-csv elements.csv)
foreach($row in $csv){
$name=(get-date).ticks
$registration= $row.registration
$bill= $row.bill
$financial= $row.financial
add-content registration.html "<%="
add-content registration.html $registration
add-content registration.html "%>"
add-content bill.html "<%="
add-content bill.html $bill
add-content bill.html "%>"
add-content financial.html "<%="
add-content financial.html $financial
add-content financial.html "%>"
}
add-content registration.html "</div></body></html>"
add-content bill.html "</div></body></html>"
add-content financial.html "</div></body></html>"
4

1 回答 1

0

我取决于很多事情,基本上你需要弄清楚每个文件的逻辑并相应地生成内容。根据您已有的,我可以建议一种更短的方法:

add-content registration.html "<html><head></head><body><div id='registration'>"
add-content bill.html "<html><head></head><body><div id='bill'>"
add-content financial.html "<html><head></head><body><div id='financial'>"

import-csv elements.csv | foreach{
    add-content registration.html ('<%={0}%>' -f $_.registration)
    add-content bill.html ('<%={0}%>' -f $_.bill)
    add-content financial.html ('<%={0}%>' -f $_.financial)
}

add-content registration.html,bill.html,financial.html "</div></body></html>"

您可以进一步概括以上内容,我没有对其进行测试,但 imo 它应该可以工作。

'registration','bill','financial' | ForEach-Object {

    $page = $_

    add-content "$page.html" "<html><head></head><body><div id='$page'>"

    import-csv elements.csv | foreach{
        add-content "$page.html" ('<%={0}%>' -f $_."$page")
    }

    add-content "$page.html" "</div></body></html>"
}
于 2013-06-12T14:30:00.587 回答