如何阅读Powershell中的整个专栏

时间:2015-09-17 15:34:53

标签: powershell-v2.0 powershell-ise

我正在尝试编写一个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行开始。 提前谢谢。

1 个答案:

答案 0 :(得分: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是文件名。您只需将它们替换为所需的位置和文件名称即可。