我正在使用Powershell对Excel电子表格进行排序。无论是打开现有电子表格还是即时创建电子表格,我都会得到相同的结果。
下面的代码可以对A列上的整个工作表进行排序。
$xl = New-Object -ComObject excel.application
$xl.Visible = $True
$xlwb = $xl.Workbooks.Open("E:\test.xlsx",1)
$xlws = $xlwb.Worksheets.Item("Sheet1")
$xlws.Activate()
$last = $xlws.UsedRange.SpecialCells(11).Address($False,$False)
$range1 = $xlws.Range("A1")
$range2 = $xlws.Range("A1:$last")
$range2.Sort($range1,1)
$xlwb.Save()
$xl.Quit()
根据我的研究,要在多个列(例如A和B)上进行排序,公认的智慧似乎是在执行以下操作。当我这样做时,我没有收到任何错误,但是列没有排序。
$xlSortOnValues = 0
$xlPinYin = 1
$xlTopToBottom = 1
$xlAscending = 1
$xlDescending = 2
$xlNo = 2
$xlYes = 1
$xl = New-Object -ComObject excel.application
$xl.Visible = $True
$xlwb = $xl.Workbooks.Open("E:\test.xlsx",1)
$xlws = $xlwb.Worksheets.Item("Sheet1")
$xlws.Activate()
$last = $xlws.UsedRange.SpecialCells(11).Address($False,$False)
$range1 = $xlws.Range("A1")
$range2 = $xlws.Range("B1")
$range3 = $xlws.Range("A1:$last")
$xlws.Sort.SortFields.Clear()
$xlws.Sort.Header = $xlNo
$xlws.Sort.Orientation = $xlTopToBottom
$xlws.Sort.SortFields.Add($range1, $xlSortOnValues, $xlAscending, $xlPinYin)
$xlws.Sort.SortFields.Add($range2, $xlSortOnValues, $xlAscending, $xlPinYin)
$xlws.Sort.SetRange($range3)
$xlws.Sort.Apply
$xlwb.Save()
$xl.Quit()
我在做什么错?