【问题标题】:How to read a whole column in Powershell如何在 Powershell 中阅读整列
【发布时间】:2015-09-17 15:34:52
【问题描述】:

我正在尝试编写一个 powershell 脚本,它将电子表格中列的内容输出到 txt 文件。我不知道powershell,但我发现并想出了如何获取单元格,现在我需要整列。有问题的电子表格有 8K+ 行。这是我目前所拥有的:

$SMTPApprovedXLS = "c:\temp\SMTP\SMTPAPPLIST.XLS"
$SheetName = "Active"
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $False
$Workbook = $objExcel.Workbooks.open($SMTPApprovedXLS)
$Worksheet = $Workbook.sheets.item($SheetName)
$startRow = 4

[pscustomobject][ordered]@{
    ApprovedIPs = $Worksheet.Cells.Item(4,$startRow).Value()
}

列是“D”,应该从第 4 行开始。 提前致谢。

【问题讨论】:

    标签: powershell-2.0 powershell-ise


    【解决方案1】:

    您所要做的就是使用循环遍历所有条目并捕获数据。试试这个:

    $SMTPApprovedXLS = "c:\temp\SMTP\SMTPAPPLIST.XLS"
    $SheetName = "Active"
    $objExcel = New-Object -ComObject Excel.Application
    $objExcel.Visible = $False
    $Workbook = $objExcel.Workbooks.open($SMTPApprovedXLS)
    $Worksheet = $Workbook.sheets.item($SheetName)
    $startRow = 4
    
    $ApprovedIPs = @()
    
    $count = $Worksheet.Cells.Item(65536,4).End(-4162)
    
    for($startRow=4; $startRow -le $count.row; $startRow++)
    {
     $ApprovedIPs += $Worksheet.Cells.Item($startRow, 4).Value()
    }
    
    $ApprovedIPs | Out-File C:\ApprovedIPs.txt
    

    请注意,最后一行是使用所需数据创建 txt 文件的内容,其中 C:\ 是目录,ApprovedIPs 是文件名。您可以将它们替换为您想要的文件位置和名称。

    【讨论】:

    • 工作就像一个魅力。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多