使用Python从Excel排序列数据

时间:2017-06-27 18:45:23

标签: python excel xlrd xlsxwriter

有没有办法从excel表中获取列,将列写为列表,对它们进行排序,然后将它们重写为另一个excel表?这是我到目前为止所尝试过的,但它只写了最后一列数据。我不需要前两行数据,因为它们只是标题。

import xlrd
import xlsxwriter

wb = xlrd.open_workbook('exceldata.xlsx')
ws = wb.sheet_by_index(0)

col=[]

for i in range(2,ws.ncols):
    col=ws.col_values(i)

    for x in range(2):
        col.pop(0)

    col.sort()

    workbook = xlsxwriter.Workbook('test_sorting.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.write_column('A1',col)
    workbook.close()

更新:这是成功的,但有人知道如何简化这项工作吗?

import xlrd
import xlsxwriter

wb = xlrd.open_workbook('exceldata.xlsx')
ws = wb.sheet_by_index(0)


col1=ws.col_values(2)
for x in range(2):
    col1.pop(0)
col1.sort()

col2=ws.col_values(3)
for x in range(2):
     col2.pop(0)
col2.sort()

col3=ws.col_values(4)
for x in range(2):
     col3.pop(0)
col3.sort()

col4=ws.col_values(5)
for x in range(2):
    col4.pop(0)
col4.sort()

col5=ws.col_values(6)
for x in range(2):
     col5.pop(0)
col5.sort()

columns=[]
for i in range(2,7):
    col=ws.col_values(i)
    columns.append(col)

print(columns)

workbook = xlsxwriter.Workbook('test_sorting.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write_column('A2',col1)
worksheet.write_column('B2',col2)
worksheet.write_column('C2',col3)
worksheet.write_column('D2',col4)
worksheet.write_column('E2',col5)

workbook.close()

1 个答案:

答案 0 :(得分:0)

我认为您需要将excel中的(或)扩展()列名称添加到列表'col'中。目前,每次FOR循环迭代时它都会替换'i'的值。

可能是这样的: col.append(ws.col_values(i))的

P.S。这是我关于堆栈溢出的第一个答案。希望能帮助到你。我没有测试过(我会测试它并在需要时更新答案)。