【问题标题】:How to modify excel data and export to text file using PowerShell script?如何使用 PowerShell 脚本修改 Excel 数据并导出到文本文件?
【发布时间】:2022-10-21 03:16:34
【问题描述】:

第一次在这里发海报。如果我没有遵循发布此问题的最佳做法,我深表歉意。

我对脚本和 PowerShell 非常陌生。

问题:

我在这种格式的 Excel 表中有数据。

Excel 数据图像链接

我想修改这些数据并将其导出到文本文件中。以这种格式。

所需的输出图像链接

到目前为止,我已经尝试通过访问每个单元格来修改 excel 数据。要访问每个单元格,我使用了下面提到的类似代码。

 for (($i = 1); $i -lt 4; $i++)
{
$column=$ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$dataType=$ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text

$c1=("`"" + "$column" + "`""+":")
$c2=("`"" + "$dataType" + "`"" + ",")
$ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Value=$c1
$ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Value=$c2
}

我仍然不确定这是否是正确的方法。

解决这个问题的最佳方法是什么?

只是想了解我应该怎么做才能解决这个问题。我不是在寻找确切的代码。

分步说明或一些资源会有所帮助。

谢谢!

【问题讨论】:

  • 以防万一你还没有学会。您应该学习如何在 Excel 电子表格和 CSV 文件之间传输表格。尽管它需要手动步骤,但它在 Excel 本身中非常容易。然后你应该学习 Import-Csv 和 Export-Csv。这将为您提供相当大的数据操作能力。这不像你正在学习的那样先进,但回报是值得学习的。

标签: excel algorithm powershell text-files


【解决方案1】:

这可能会有所帮助......也许......

# Import Stuff
$Data = Import-Csv -Path .Desktopdata.csv

# New Array 
$Output = @()

# Run through Unique Owners
foreach ($Owner in ($Data | Select-Object OWNER -Unique)) {
    $Lines = $Data | Where-Object {$_.OWNER -eq $Owner.OWNER}
    # Lazy way to do a bit of checking, if same then use it or Break
    if ($Lines[0].TABLE_NAME -eq $Lines[1].TABLE_NAME) {
        $Out_TableName = $Lines[0].TABLE_NAME
        # ID and NAME data
        $Out_ID = $Lines | Where-Object {$_.COLUMN_NAME -eq "ID"} | Select-Object COLUMN_NAME, DATA_TYPE, DATA_LENGTH
        $Out_NAME = $Lines | Where-Object {$_.COLUMN_NAME -eq "NAME"} | Select-Object COLUMN_NAME, DATA_TYPE, DATA_LENGTH
    } else {
        # Show the user that something
        Write-Host "Problem with Owner ""$($Owner.OWNER)"" Data?!" -ForegroundColor Red
        Break
    }
    # Output into the array in format
    $Output += @"
"$($Owner.OWNER).$($Out_TableName)":{
"$($Out_ID.COLUMN_NAME)": "$($Out_ID.DATA_TYPE) ($($Out_ID.DATA_LENGTH))",
"$($Out_NAME.COLUMN_NAME)": "$($Out_NAME.DATA_TYPE) ($($Out_NAME.DATA_LENGTH))"
}

"@
}

# Put Output in a text file
$Output | Set-Content .Desktopoutput.txt -Force

我应该补充一点,我将您的数据保存在这样的 CSV 文件中......

OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH
A,Employee,ID,NUMBER,22
A,Employee,NAME,VARCHAR2,22
B,Department,ID,NUMBER,23
B,Department,NAME,VARCHAR2,24

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2020-07-28
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多