使用powershell对带有标题的excel列进行排序

时间:2017-07-29 06:26:53

标签: excel powershell sorting

所以我导入CSV,格式化日期列并保存为XLS文件。

我希望能够对日期列进行排序。我有以下代码,并且我对如何对列进行排序感到困惑。日期列是第4列,有"日期"作为第1行的标题

$xl = new-object -comobject excel.application
$xl.visible = $false
$Workbook = $xl.workbooks.open(“$destination")
$xl.columns.autofit() >$null
$xl.Columns.Item('D').NumberFormat = "MM/dd/yyy"
$Workbook.SaveAs($final,1)
$Workbook.Saved = $True
$xl.Quit()

我已经录制了以下宏但无法解读如何将其更改为powershell。任何帮助表示赞赏

Sub Macro1()
'
' Macro1 Macro
'

'
   Columns("D:D").Select
     ActiveWorkbook.Worksheets("newreport").Sort.SortFields.Clear
     ActiveWorkbook.Worksheets("newreport").Sort.SortFields.Add Key:=Range("D1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("newreport").Sort
        .SetRange Range("A1:F251")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

1 个答案:

答案 0 :(得分:0)

这很容易!

$empty_Var = [System.Type]::Missing
$sort_col = $objWorkSheet.Range("A1:A255")
$objWorkSheet.UsedRange.Sort($sort_col,1,$empty_Var,$empty_Var,$empty_Var,$empty_Var,$empty_Var,1)

关于Sort方法参数的含义,您可以查看office vba手册:https://docs.microsoft.com/en-us/office/vba/api/excel.range.sort