用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过程 。