用openpyx排序

2024-05-14 14:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用openpyxl将列从最小排序到最大排序。我愿意使用其他库来实现这一点。这是我现在拥有的代码,但是,没有任何东西被排序。

from openpyxl import load_workbook

wb=load_workbook('NotSorted.xlsx')
ws1=wb.get_sheet_by_name('Mean')

ws1.auto_filter.add_sort_condition('J2:J21')

wb.save('Sorted.xlsx')

非常感谢您的帮助!


Tags: 代码namefromimportgetby排序load
2条回答

您可以使用win32com.client进行排序(使用pip install pypiwin32安装)。

名为MyWorkbook.xlsx的示例工作簿,包含以下内容(之前和之后):

Before sortingAfter sorting

import win32com.client

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

wb = excel.Workbooks.Open('MyWorkbook.xlsx')
ws = wb.Worksheets('Sheet1')

ws.Range('A2:A9').Sort(Key1=ws.Range('A1'), Order1=1, Orientation=1)

wb.Save()
excel.Application.Quit()

如果不想更改原始工作簿,请使用^{}或创建另一个工作簿并复制如下数据:ws_from.Range("A1:AF100").Copy(ws_to.Range("A1:AF100"))(具有适当的范围)。

有关Sort()及其参数的详细信息,请参阅以下文档链接:

openpyxl documentation清楚地说明:

This will add the relevant instructions to the file but will neither actually filter nor sort.

因此,您需要计算新的行序列并显式地移动数据(即将单元格分配到它们的新位置)。

相关问题 更多 >

    热门问题