用openpyxlsorting

我正在尝试使用openpyxl从最小到最大的列对列进行sorting。 我很乐意使用其他库来实现这一点。 这里是我现在的代码,但是,没有任何东西正在sorting。

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') 

任何帮助是极大的赞赏!

openpyxl文档明确指出:

这将添加相关的说明文件,但不会实际过滤或sorting。

所以你需要计算新的行序列并明确地移动数据(即将单元格分配到新的位置)。

您可以使用win32com.client进行sorting(使用pip install pypiwin32进行pip install pypiwin32 )。

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

在排序之前 分类后

 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() 

如果您不想更改原始工作簿,请使用SaveAs()或创build另一个工作簿并复制数据,如下所示: ws_from.Range("A1:AF100").Copy(ws_to.Range("A1:AF100")) (适当的范围)。

有关Sort()及其参数的更多信息,请参阅这些文档链接:

  • Range.Sort()
  • XlSortOrientation
  • XlSortOrder
  • 更好的方法来产生excel过程 。