2014-11-02 282 views
0

我是python編程新手。我寫了一個腳本從api獲取數據(使用python 2.7.8),現在我想將它添加到excel電子表格中,並保存所有數據。openpyxl:找到每列的最高行

在我的電子表格中,每行都是一天,但某些數據直到30天后纔會變爲可用狀態,所以我的某些列未滿到當前日期。基本上,並非所有的列長度都是相同的。

我想閱讀每一列,找到該列的最高行,然後將我的數據點添加到該列的末尾。如果所有列的長度相同,這將很簡單,但我不明白如何分別查找每列的長度。

我已經通讀了關於openpyxl的文檔,但是我對python很陌生,並且我不是很瞭解所有的東西。我認爲解決方案將涉及「爲每列獲取最高行」之類的內容,然後將每個數據點附加到該列。但我不明白如何去做「每列」部分。找到每一列的長度也是可行的。

在此先感謝

編輯:我想出了一個解決辦法:我知道列的相對長度,所以我減去從最後一排數:

last_row = ws.get_highest_row() + 1 
col_num = 1 
dataRow_length = len(dataRow) 
row_offset = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 7, 14, 28, 1, 2, 3, 7, 14, 28] 

for i in range(0, dataRow_length - 1): 
    ws.cell(row=(last_row - row_offset[col_num - 1]), column=col_num).value = dataRow[i] 
    col_num = col_num + 1 

回答

1

如果您遍歷工作表的行,你總能找到一行的長度。這應該足以滿足您的需求。如果沒有,請提供一些您的代碼,以便更清楚地知道您想要做什麼。

+0

感謝您回覆查理。我試圖找到每列的長度,而不是行。我無法弄清楚如何做到這一點,所以我使用瞭解決方法。我知道所有列的相對長度,所以我創建了一個「行偏移量」列表,並從列的最後一行中減去偏移量的長度: – Davidjb 2014-11-05 02:25:57

+0

我將我的代碼添加到上面的答案 – Davidjb 2014-11-05 02:27:00

+0

工作表具有'。列屬性,它返回所有列的連續。 – 2014-11-05 08:16:23

相關問題