2015-09-17 31 views
0

我正在嘗試編寫一個powershell腳本,它將電子表格中的列內容輸出到txt文件。我不知道powershell,但我發現並找出如何獲得一個單元格,現在我需要整個列。有問題的電子表格有8K +行。以下是我迄今爲止:如何閱讀Powershell中的整個列

$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. 感謝。

回答

0

您只需使用循環遍歷所有條目並捕獲數據。試試這個:

$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是文件名。您可以將它們替換爲您想要的位置和文件名稱。

+0

工作就像一個魅力。感謝您的幫助! – LooneyTeck

+0

很高興我能幫到你 – Gnarlywhale