如何用Python按列排序xls文件并将整行写入另一个文件?

1 投票
1 回答
8472 浏览
提问于 2025-04-17 12:14

如何用Python按列对xls文件进行排序,并将整个行写入另一个文件?这个xls文件需要按列进行排序。排序完成后,还要把结果写入另一个文件。

1 个回答

5

这样怎么样:

     column = 0 #The column you want to sort by
     reader = list(csv.reader(open('input.xsl')))
     reader.sort(key=lambda x: x[column])
     writer = csv.writer(open('output.xsl', 'w'))
     writer.writerows(reader)

我说错了,不过你可以把数据导出为csv格式。如果你想继续使用xls格式,可以用xlrd和xlwt这两个库。我对这方面的经验不多,但我有一个之前做任务时的示例。这里给你看看(不过要注意,这个示例不是百分之百完美,因为每列的标题会存储在输出文件的第一行):

    import xlwt
    from xlrd import open_workbook

    target_column = 0

    book = open_workbook('input.xls', formatting_info=True)
    sheet = book.sheets()[0]
    data = [sheet.row_values(i) for i in xrange(sheet.nrows)]
    labels = data[0]
    data = data[1:]
    data.sort(key=lambda x: x[target_column])

    wbk = xlwt.Workbook()
    sheet = wbk.add_sheet(sheet.name)

    for idx, label in enumerate(labels):
         sheet.write(0, idx, label)

    for idx_r, row in enumerate(data):
        for idx_c, value in enumerate(row):
            sheet.write(idx_r+1, idx_c, value)

    wbk.save('result.xls')

撰写回答