簡體   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