有没有办法从excel表格中获取列,将列写入列表并将其排序,然后将它们重写为另一个Excel表格?这是我到目前为止所尝试的,但它只写入最后一列数据。我不需要前两行数据,因为它们只是标题。使用Python对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()
UPDATE:这是成功的,但没有人知道这是如何简化?
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()
+0
您不需要弹出任何值。您可以简单地从第二个元素开始检索值:'ws.col_values(3,1)'返回一个以D2开头的值列表。虽然我认为xlrd是阅读Excel文件的最佳软件包,但它没有最好的文档。您应该查看旧的[教程PDF](https://github.com/python-excel/tutorial)的xlrd部分。是的,它已经过时了,但仍然比“官方”xlrd文档更好。 –
+0
最后的循环,构建'columns',是正确的想法。您可以使用'columns'而不是'col1','col2'等。请注意,虽然'columns'是一个列表,但它内部的元素也是列表,因此可以单独引用和操作。例如,在上面的代码中,'columns [2]'包含与'col3'相同的数据(除了弹出和排序)。你如何弹出和排列“列”中的数据?最简单的方法就是在你创建'columns'的时候,在将'col'追加到'columns'之前立即做'col'。 –