有沒有辦法從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()
您不需要彈出任何值。您可以簡單地從第二個元素開始檢索值:'ws.col_values(3,1)'返回一個以D2開頭的值列表。雖然我認爲xlrd是閱讀Excel文件的最佳軟件包,但它沒有最好的文檔。您應該查看舊的[教程PDF](https://github.com/python-excel/tutorial)的xlrd部分。是的,它已經過時了,但仍然比「官方」xlrd文檔更好。 –
最後的循環,構建'columns',是正確的想法。您可以使用'columns'而不是'col1','col2'等。請注意,雖然'columns'是一個列表,但它內部的元素也是列表,因此可以單獨引用和操作。例如,在上面的代碼中,'columns [2]'包含與'col3'相同的數據(除了彈出和排序)。你如何彈出和排列「列」中的數據?最簡單的方法就是在你創建'columns'的時候,在將'col'追加到'columns'之前立即做'col'。 –