一,、如何通過powershell打開一個Excel表格,, 1 $file_excel = Get-Item ('D:\Powershell_test\test.xlsx')
2 $Excel = New-Object -ComObject Excel.Application 3 $Excel.Visible = $true 4 $WorkBook = $Excel.Workbooks.Open($file_excel) 5 $WorkSheet = $Workbook.Sheets.Item('Status') 6 $SheetRow = $WorkSheet.UsedRange.Rows.Count 1、第一行是通過Get-Item把D盤Powershell_test文件夾下的test.xlsx這個對象賦給$file_excel這個變量,。 1 $excel_count =0
2 for($b = 1; $b -le $SheetRow; $b++)
3 {
4 if($WorkSheet.Cells.item($b,1).text -ne '') #$b代表行數(shù)變量,,數(shù)字1代表的是表格中的列,,通過對$b的循環(huán),獲得有效行數(shù)
5 {
6 $excel_count++
7 }
8 }
最后的$excel_count的值就是準確的,。 二,、設(shè)置表格的邊框 $WorkSheet.Cells.item(1,1).borders.LineStyle = 1
1、$WorkSheet.Cells.item(1,1)中的(1,1)代表的是第一行中的第一列方格,。請根據(jù)實際需要替換 三,、設(shè)置表格底色 $WorkSheet.Cells.item($excel_next_valid_row,1).font.size = 10
1、等號右邊的10用來調(diào)節(jié)顏色,,不同的顏色數(shù)字不一樣,,請根據(jù)實際需求對10進行變化,。 四、關(guān)閉Excel的進程函數(shù),,一般放在腳本的最上方,當(dāng)Excel處理完畢需要保存并關(guān)閉Excel進程時,,需要調(diào)用這個函數(shù),,具體見下面的代碼 function close-excel ($ref) { ([System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$ref)) [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() } 五、保存Excel并關(guān)閉Excel進程 1 $WorkBook.save()
2 $Excel.Workbooks.Close()
3 $Excel.Quit()
4 close-excel($WorkSheet)
5 close-excel($WorkBook)
6 close-excel($Excel)
1,、如果需要將Excel另存為,,需要將$WorkBook.save()變?yōu)?span>$WorkBook.savesa('c:\123\'),文件將會被另存在C盤目錄123下。 六,、Copy整列數(shù)據(jù) 1 $file = “C:\test\test.xlsx” 2 $Excel = New-Object -ComObject excel.application 3 $Excel.visible = $true 4 $Workbook = $excel.Workbooks.open($file) 5 $Worksheet = $Workbook.WorkSheets.item(“test”) 6 $worksheet.activate() 7 $range = $WorkSheet.Range(“A1:B1”).EntireColumn 8 $range.Copy() | out-null text 9 $Worksheet = $Workbook.Worksheets.item(2) 10 $Range = $Worksheet.Range(“D1”) 11 $Worksheet.Paste($range) 1,、上面的操作是將test.xlsx中的第一個sheet中的A1和B1的整列數(shù)據(jù)拷貝到第二個sheet的D1開始的列,如果是拷貝行的話,,把代碼的第七行中的EntireColumn換成EntireRow,。如拷貝A1到A100的數(shù)據(jù),$range = $WorkSheet.Range(“A1:A100”).EntireRow 七,、在Excel中搜索特定字符串,,找到后返回行標,該代碼可以替換以for循環(huán)為基礎(chǔ)的搜索,。比for循環(huán)要快的多 1 #以下代碼可以在電腦屏幕中輸出多個符合搜索條件的行標,,如果要輸出多個列標,第10行代碼可以替換為$Column = $Target.Column()
2 #如果要限定搜多范圍,,比如只在C列搜索,,則第4行換成$Range = $WorkSheet.Range('C:C')
3 $SearchString = \'abc\' #在excel中搜索“abc”這個字符串
4 $Range = $WorkSheet.UsedRange
5 $Target = $Range.Find($SearchString)
6
7 $First = $Target
8 Do
9 {
10 $row_NO = $Target.row()
11 Write-Host $row_NO
12 $Target = $Range.FindNext($Target)
13 }
14 While ($Target -ne $NULL -and $Target.row -ne $First.row)
八、刪除sheet中的所有有內(nèi)容的行 1 $Sheetrow=$WorkSheet.UsedRange.Rows.Count 2 $Worksheet.Rows.Delete($sheetrow) 九,、刪除sheet中的指定行 $Worksheet.Range('A2:A9').EntireRow.delete()
十,、查看指定列的有效行 $ExcelPath = Get-Item \'F:\xxx.xlsx\' |
|
來自: F2967527 > 《PowerShell》