#コマンドラインパラメータ #Targetpath:出力CSVファイルの絶対パスー #sourcePath:保存ファイルの絶対パスー Param($Targetpath,$sourcePath) # アセンブリの読み込み Add-Type -Assembly System.Windows.Forms # Excelを操作する為の宣言 $xl = new-object -comobject excel.application $xl.displayAlerts = $false # 可視化しない $xl.Visible = $False # コピー先のExcel $TargetWb = $xl.Workbooks.Open("C:\Users\wei286\Desktop\CSVファイル取り込みTemplate.xlsx") # コピー元のExcel $SourceWb = $xl.Workbooks.Open($sourcePath) #$str = Left(SourceWb.Name, InStrRev(SourceWb, ".") - 1) & ".xlsx" # ワークシートを番号で指定し、接続する $TargetSheet = $TargetWb.worksheets.Item(1) # コピー範囲の指定 $SourceRange = $SourceWb.WorkSheets.item(1).usedRange # コピー $SourceRange.copy() # 貼り付け開始位置の指定 $TargetRange = $TargetSheet.range("1:1") # 貼り付け $TargetRange.PasteSpecial(-4123) # 指定したセル $TargetUsedRange = $TargetSheet.usedRange # フォントサイズ $TargetUsedRange.font.Size = 9 # フォント書式 $TargetUsedRange.font.Name = "MS Pゴシック" # 罫線を使用する前の宣言 (罫線の種類) $LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type] # 罫線の種類を指定 $TargetUsedRange.borders.LineStyle = $LineStyle::xlContinuous # 名前をつけて保存 $TargetWb.SaveAs($Targetpath) # Excelを閉じる $xl.Quit() # プロセスを解放する $xl = $null [GC]::Collect() # メッセージボックスの表示 [System.Windows.Forms.MessageBox]::Show("処理が終了")
关于Powershell的Excel操作,首先是基本操作
1,Excel应用定义
$excel = New-Object -ComObject Excel.Application
2, 对话框是否显示
$excel.displayAlerts = $false --不显示
$excel.displayAlerts = $false --显示
3,操作过程是否可视
$excel.Visible = $false --不可视
$excel.Visible = $true --可视
4,打开已有excel文件
$workbook=$excel.Workboks.open(”文件地址”)--例:’"C:\TEST\AAA.xlsx"
5,工作簿做成
$book=$excel.Worksheets.Add()
6,工作簿指定
$sheet=$excel.Worksheets.Item(1)
注:数字指定的话是从1开始,名称也可以指定,如下例
$sheet = $excel.Worksheets.Item("Sheet1")
7,指定单元格输入
$sheet.Cells.Item(1,2)="Powershell"
注:只能用数字指定(行,列)
8,保存(覆盖保存)
$workbook.Save()
9,另存为
$workbook.SaveAs(”文件地址”)--例:’"C:\TEST\AAA.xlsx"
# 关闭Excel应用
$excel.Quit()
# 释放进程
$excel = $null
[GC]::Collect()
尽管excel关闭,但是进程仍然存在,打开任务管理器,可以看到存在名为「EXCEL.EXE」的进程,会影响系统的运行,所以这两行必须要写上