繁体   English   中英

使用Python按4列对Excel排序(使用win32com吗?)

[英]Sorting Excel by 4 columns using Python (using win32com?)

我一直在尝试按4列对电子表格进行排序。 使用win32com,我已成功使用以下代码按3列进行排序:

excel = win32com.client.Dispatch("Excel.Application")

wb= excel.Workbooks.Open('.xlsx')
ws= wb.worksheets[0]

ws.Range(D6:D110).Sort(Key1=ws.Range('D1'), Order1=1, Key2=ws.Range('E1'), Order2=2, Key3=ws.Range('G1'), Order3=3, Orientation=1)

但是,当我尝试添加Key4时,它说Key4是意外的关键字参数。 Range.Sort功能是否仅限于3个键? 有没有办法增加第四位?

是否有另一种方法可以使用pandas或openpyxl?

提前致谢!

尝试阅读excel工作表,然后按标题名称排序。 假设您的Excel工作表格式正确,例如CSV。

import pandas as pd
df = pd.read_excel('filename.xlsx')
df = df.sort_values(['key1','key2','key3','key4'], axis=1)
df.to_excel('filename2.xlsx')

简单地按三个键的顺序对需要的两倍或多次进行排序。

xlAscending = 1
xlSortColumns = 1
xlYes = 1

ws.Range(D6:D110).Sort(Key1=ws.Range('D1'), Order1=xlAscending, 
                       Key2=ws.Range('E1'), Order2=xlAscending, 
                       Key3=ws.Range('G1'), Order3=xlAscending, 
                       header=xlYes, Orientation=xlSortColumns)

# FOURTH SORT KEY (ADJUST TO NEEDED COLUMN)
ws.Range(D6:D110).Sort(Key1=ws.Range('H1'), Order1=xlAscending,
                       header=xlYes, Orientation=xlSortColumns)

顺便说一下,对于xlSortOrder常量,您的订单号应仅为1、2或-4135。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM