powershell 조작 excel

53275 단어 2018 가을powershell
  • Excel 응용 프로그램 객체는 어떻게 만듭니까?
    $xl = new-object -comobject excel.application
    
  • 기본적으로 만들어진 Excel 응용 프로그램 객체는 백그라운드에 있습니다. 기본적으로 프로그램의 주 창이 표시되지 않습니다. 어떻게 표시됩니까?
    $xl.Visible = $true
    
  • Excel 파일을 만듭니다. 즉, 우리의 Excel 문서입니다. (별말씀: Excel 프로그램은 여러 개의 워크북을 열 수 있습니다. 워크북은 여러 개의 sheet을 포함하고 셸은 여러 개의 워크북을 포함합니다
    $wb = $xl.Workbooks.Add()
    
  • 워크시트를 추가합니까?
    $xl = new-object -comobject excel.application
    
    $xl.Visible = $true
    
    #  ado_object_models.xls Excel    
    $wb = $xl.Workbooks.Open("C:\Scripts\ado_object_model.xls")
    
    #       
    $ws = $xl.Sheets.Add()
    
  • 어떻게 워크북을 활성화합니까?어떤 워크북을 우리가 조작할 수 있는 상태로 선택하는 것이다.
    #   Excel       
    $xl = new-object -comobject Excel.Application
    #   Excel         
    $xl.visible = $true
    #     Excel  
    $wb = $xl.workbooks.open("C:\Scripts\PowerShell\test.xls")
    
    #   Excel        
    $ws1 = $wb.worksheets | where {$_.name -eq "sheet1"} #
    $ws2 = $wb.worksheets | where {$_.name -eq "sheet2"} #
    $ws3 = $wb.worksheets | where {$_.name -eq "sheet3"} #
    
    #   sheet1
    $ws1.activate()
    
    Start-Sleep 1
    
    #    sheet 2
    $ws2.activate()
    
    Start-Sleep 1
    
    #    sheet 3
    
    $ws3.activate()	
    
  • 활성 셀의 값은 어떻게 변경합니까?(이벤트 셀, 즉 현재 선택한 상태에서 우리가 조작할 수 있는 셀)
    $xl.ActiveCell.Value2 = "x"
    
  • 어떤 구체적인 칸의 값을 어떻게 바꿉니까?
    $xl.activesheet.cells.item(2,1).value2=”y”
    
    $xl.cells.item(2,1).value2=”y”
    
    $xl.ActiveSheet.Range("B1").Value2 = "y"
    
  • excel 문서의 이름을 어떻게 얻습니까?
    $wb.Name
    $xl.activeWorkBook.name
    
  • 어떻게 행 번호, 열 번호를 통해 상응하는 모든 칸의 값을 열거합니까?
    $xl = new-object -comobject excel.application
    $xl.Visible = $true
    $wb = $xl.Workbooks.Add()
    $ws = $wb.Worksheets.Item(1)
    
    #   11 ,           1–〉11
    for ($row = 1; $row -lt 11; $row++)
    {
        $ws.Cells.Item($row,1) = $row
    
    }
    
  • 어떤 폴더 아래의 모든 파일을 열거한 다음에 목록을 Excel로 가져옵니까?
    $xl = new-object -comobject excel.application
    $xl.Visible = $true
    $wb = $xl.Workbooks.Add()
    $ws = $wb.Worksheets.Item(1)
    
    $row = 1
    #                    
    $s = dir
    
    $s | foreach -process `
    { `
        #               Excel
        $ws.Cells.Item($row,1) = $_; `
        $row++ `
    
    }
    
  • 현재 시스템 프로세스 목록을 가져와 Excel로 출력합니까?
    #         Excel        ,     Excel   quit()  
    #   ,     Excel     ,      Excel         
    #  ,               ,         Com  , 
    #    .net            。    office Powershell     
    #         office application   。
    
    function Release-Ref ($ref) {
    [System.Runtime.InteropServices.Marshal]::ReleaseComObject($ref)
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers()
    
    }
    
    # —————————————————–
    
    $xl = New-Object -comobject Excel.Application
    
    $xl.Visible = $True
    
    $wb = $xl.Workbooks.Add()
    $ws = $wb.Worksheets.Item(1)
    $range = $ws.Cells.Item(1,1)
    
    $row = 1
    #       ,        
    $s = Get-Process | Select-Object name
    $s | foreach -process {
        $range = $ws.Cells.Item($row,1);
        $range.value2 = $_.Name;
        $row++ }
    
    #         office         ,              
    $xl.DisplayAlerts = $False
    #  excel     Saveas         
    $wb.SaveAs("C:\Scripts\Get_Process.xls")
    
    #     $range  
    Release-Ref $range
    # powershell   blog        ,   remove-variable $range, 
    #          ,             ,        
    #  variable:\  ,    dir variable:\     
    
    remove-variable $range
    Release-Ref $ws
    remove-variable $ws
    Release-Ref $wb
    remove-variable $wb
    $xl.Quit()
    Release-Ref $xl
    remove-variable $xl
    
  • **원격 컴퓨터를 위한 작업이라면 아래의 것을 시도해 보세요. 물론 우선 Wsman
    $strComputer = (remote machine name)
    $P = gwmi win32_process -comp $strComputer
    
    
  • 을 설정해야 합니다.
  • Excel 파일은 어떻게 엽니까?
    #an existing Workbook
    $xl.Workbooks.Open("C:\Scripts\ado_object_model.xls")
    
  • 새 Excel 파일 워크북은 어떻게 만듭니까?
    $xl = new-object -comobject excel.application
    $xl.Visible = $true
    $wb = $xl.Workbooks.Add()
    $xl.ActiveCell.Value2 = "x"
    $xl.ActiveSheet.Range("B1").Value2 = "y"
    
  • 어떻게 Powershell의 명령을 Excel에 입력합니까?
    function Release-Ref ($ref) {
    
    ([System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComOb­ject]
    $ref) -gt 0)
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers()
    
    }
    
    # —————————————————–
    
    $xl = New-Object -comobject Excel.Application
    
    $xl.Visible = $True
    
    $wb = $excel.Workbooks.Add()
    $ws = $workbook.Worksheets.Item(1)
    $range = $worksheet.Cells.Item(1,1)
    
    $row = 1
    $s = Get-History | foreach -process { `
    $range = $worksheet.Cells.Item($row,1); `
    #   Value2       ,    value     。
    $range.value2 = $_.CommandLine; `
    $row++ }
    
    $xl.DisplayAlerts = $False
    $wb.SaveAs("C:\Scripts\Get_CommandLine.xls")
    
    Release-Ref $range
    
    Release-Ref $ws
    
    Release-Ref $wb
    
    $xl.Quit()
    
    Release-Ref $xl
    
  • "~"구분된 텍스트 파일을 Microsoft Excel로 어떻게 변환합니까?
    # Script name: ConvertTilde.ps1
    # Created on: 2007-01-06
    # Author: Kent Finkle
    # Purpose: How Can I Convert a Tilde-Delimited File to Microsoft Excel
    Format?
    
    $s = gc C:\Scripts\Test.txt
    #   ~   Tab   ,    Excel   ,        
    #  import-csv                 CSV   excel     
    $s = $s -replace("~","`t")
    $s | sc C:\Scripts\Test.txt
    $xl = new-object -comobject excel.application
    $xl.Visible = $true
    $wb = $xl.Workbooks.Open("C:\Scripts\Test.txt")
    
  • Excel 워크시트의 데이터 유효성 검사 설정 방법
    $comments = @’
    Script name: Add-Validation.ps1
    Created on: Wednesday, September 19, 2007
    Author: Kent Finkle
    Purpose: How can I use Windows Powershell to Add Validation to an
    Excel Worksheet?
    ‘@
    
    #—————————————————–
    function Release-Ref ($ref) {
    ([System.Runtime.InteropServices.Marshal]::ReleaseComObject(
    [System.__ComObject]$ref) -gt 0)
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers()
    
    }
    
    #—————————————————–
    
    $xlValidateWholeNumber = 1
    $xlValidAlertStop = 1
    $xlBetween = 1
    
    $xl = new-object -comobject excel.application
    $xl.Visible = $True
    
    $wb = $xl.Workbooks.Add()
    $ws = $wb.Worksheets.Item(1)
    $r = $ws.Range("e5")
    $r.Validation.Add($xlValidateWholeNumber, ` $xlValidAlertStop,
    $xlBetween, "5", "10") $r.Validation.InputTitle = "Integers"
    $r.Validation.ErrorTitle = "Integers"
    $r.Validation.InputMessage = "Enter an integer from five to ten"
    $r.Validation.ErrorMessage = "You must enter a number from five to
    ten"
    
    $a = Release-Ref $r
    $a = Release-Ref $ws
    $a = Release-Ref $wb
    $a = Release-Ref $xl
    
  • Excel 워크시트에 차트 추가
    $xrow = 1
    $yrow = 8
    $xl = New-Object -c excel.application
    $xl.visible = $true
    $wb = $xl.workbooks.add()
    $sh = $wb.sheets.item(1)
    1..8 | % { $sh.Cells.Item(1,$_) = $_ }
    1..8 | % { $sh.Cells.Item(2,$_) = 9-$_ }
    $range = $sh.range("a${xrow}:h$yrow")
    $range.activate
    # create and assign the chart to a variable
    $ch = $xl.charts.add()
    $ch.chartType = 58
    $ch.setSourceData($range)
    $ch.export("C:\test.jpg")
    $xl.quit()
    
    # excel has 48 chart styles, you can cycle through all
    1..48 | % {$ch.chartStyle = $_; $xl.speech.speak("Style $_"); sleep 1}
    $ch.chartStyle = 27                          # 
    
  • Excel 워크시트의 열을 정렬
    $xlSummaryAbove = 0
    $xlSortValues = $xlPinYin = 1
    $xlAscending = 1
    $xlDescending = 2
    
    # one-column sort –> works
    [void]$range1.sort($range2, $xlAscending)
    [void]$range1.sort($range3, $xlAscending)
    # two-column sort –> doesn’t sort both columns
    # the 4th arg [xlSortType] gives problems so pass $null or ”,
    # it may be for PivotTables only
    [void]$range1.sort($range2, $xlAscending, $range3,, $xlAscending)
    
  • Excel의 열 요약
    \
    mon
    tue
    wed
    eggs
    1
    1
    1
    ham
    5
    5
    5
    spam
    1
    4
    7
    spam
    2
    5
    8
    spam
    3
    6
    9
    처리 코드:
    	$xlSum = -4157
    	
    	$range = $xl.range("A1:D6")
    	$range.Subtotal(1,-4157,(2,3,4),$true,$false,$true)
    	#     Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(4), _
    	#     Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    
  • xlConstants
    $xlAutomatic=-4105
    $xlBottom = -4107
    $xlCenter = -4108
    $xlContext = -5002
    $xlContinuous=1
    $xlDiagonalDown=5
    $xlDiagonalUp=6
    $xlEdgeBottom=9
    $xlEdgeLeft=7
    $xlEdgeRight=10
    $xlEdgeTop=8
    $xlInsideHorizontal=12
    $xlInsideVertical=11
    $xlNone=-4142
    $xlThin=2
    
    $xl = new-object -com excel.application
    $xl.visible=$true
    $wb = $xl.workbooks.open("d:\book1.xls")
    $ws = $wb.worksheets | where {$_.name -eq "sheet1"}
    $selection = $ws.range("A1:D1")
    $selection.select()
    
    $selection.HorizontalAlignment = $xlCenter
    $selection.VerticalAlignment = $xlBottom
    $selection.WrapText = $false
    $selection.Orientation = 0
    $selection.AddIndent = $false
    $selection.IndentLevel = 0
    $selection.ShrinkToFit = $false
    $selection.ReadingOrder = $xlContext
    $selection.MergeCells = $false
    $selection.Borders.Item($xlInsideHorizontal).Weight = $xlThin
    
  • 를 어떻게 사용하는지
  • excel의 자동 충전 기능이 파워셸에서의 사용
    $xlFillWeekdays = 6
    
    $xl = new-object -com excel.application
    $xl.visible=$true
    $wb = $xl.workbooks.add()
    $ws = $wb.worksheets | where {$_.name -eq "sheet1"}
    $range1= $ws.range("A1")
    $range1.value() = (get-date).toString("d")
    $range2 = $ws.range("A1:A25")
    $range1.AutoFill($range2,$xlFillWeekdays)
    $range1.entireColumn.Autofit()
    # $wb.close()
    # $xl.quit()
    
  • Excel의 선택 범위 획득
    # get-excelrange.ps1
    # opens an existing workbook in Excel 2007, using PowerShell
    # and turns a range bold # Thomas Lee – t…@psp.co.uk
    # Create base object
    $xl = new-object -comobject Excel.Application
    
    # make Excel visible
    $xl.visible = $true
    
    # open a workbook
    $wb = $xl.workbooks.open("C:\Scripts\test.xls")
    
    # Get sheet1
    $ws = $wb.worksheets | where {$_.name -eq "sheet1"}
    
    # Make A1-B1 bold
    $range = $ws.range("A1:B1")
    $range.font.bold = "true"
    
    # Make A2-B2 italic
    $range2 = $ws.range("A2:B2")
    $range2.font.italic = "true"
    
    # Set range to a value
    $range3=$ws.range("A2:B2")
    $Range3.font.size=24
    
    # now format an entire row
    $range4=$ws.range("3:3")
    $range4.cells="Row 3"
    $range4.font.italic="$true"
    $range4.font.bold=$True
    $range4.font.size=10
    $range4.font.name="comic Sans MS"
    
    # now format a Range of cells
    
    $ws.Range("D1:F5").NumberFormat = "#,##0.00"
    
  • Excel 셀에 주석 추가(Comment)
    $xll = New-Object -com Excel.Application
    $xl.visible = $True
    $wb = $xl.Workbooks.Add()
    $ws = $wb.Worksheets.Item(1)
    $ws.Cells.Item(1,1) = “A value in cell A1.[void]$ws.Range("A1").AddComment()
    [void]$ws.Range("A1").comment.Visible = $False
    [void]$ws.Range("A1").Comment.text("OldDog: `r this is a comment")
    [void]$ws.Range("A2").Select
    
    
  • 선택적 복제 및 붙여넣기는 어떻게 수행합니까?
    $xlPasteValues = -4163 
    $xlCellTypeLastCell = 11 
    
    $used = $ws.usedRange
    $lastCell = $used.SpecialCells($xlCellTypeLastCell)
    $row = $lastCell.row
    
    $range = $ws.UsedRange
    [void]$ws.Range("A8:F$row").Copy()
    [void]$ws.Range("A8").PasteSpecial(-4163)
    
  • Excel powershell에 대한 다른 경험과 정리를 정리한 결과 사실 powershell office의 코드는 일반적인 Vba 코드와 큰 차이가 없다. 간혹 문법에 따라 차이가 있을 수 있지만 함수와 속성이 같기 때문에 우리가 powershell이 어떻게 쓰는지 모를 때word, Excel의 매크로 기능을 사용하여 vba 코드를 녹음해 볼 수 있다.그리고 오피스 대상이 사용할 수 있는 속성과 방법을 알고 싶다면 오피스 자체가 가지고 있는 대상 브라우저(VBa 편집기 환경에서 F2를 누르면 조정할 수 있음)도 매우 유용하다. 상수의 값을 보고 파워셸에서 상수를 정의할 수 있다.
  • 좋은 웹페이지 즐겨찾기