2014-11-02 4 views
0

저는 파이썬 프로그래밍에 익숙합니다. 필자는 파이썬 2.7.8을 사용하여 API에서 데이터를 가져 오는 스크립트를 작성했으며 이제는 모든 데이터를 저장하는 Excel 스프레드 시트에 추가하고 싶습니다.openpyxl : 각 열의 가장 높은 행을 찾습니다.

내 스프레드 시트에서 각 행은 하루이지만 일부 데이터는 최대 30 일 후에 사용할 수 없으므로 일부 열이 현재 날짜까지 가득 차 있지 않습니다. 기본적으로 모든 열의 길이가 동일하지는 않습니다.

각 열을 읽고 해당 열의 가장 높은 행을 찾은 다음 해당 열의 끝에 데이터 요소를 추가하고 싶습니다. 모든 열의 길이가 같으면 간단하지만 각 열의 길이를 개별적으로 찾는 방법을 이해하지 못합니다.

openpyxl에 대한 문서를 읽었지만 파이썬에 익숙하지 않아 모든 것을 이해하지 못합니다. 솔루션은 '각 열에 대해 가장 높은 행을 얻는다'와 같은 것을 포함 할 것입니다. 그런 다음 각 열을 해당 열에 추가합니다. 하지만 '각 열에 대해'부분을 수행하는 방법을 이해하지 못합니다. 각 열의 길이를 찾는 것도 가능합니다. 사전에

감사

편집 : 나는 주위에 작업을 함께했다 : 나는 컬럼의 상대적인 길이는 그래서 차감 알고 마지막 행의 수에서 :

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

+0

위의 대답에 내 코드를 추가했습니다. – Davidjb

+0

워크 시트에'. columns' 속성을 사용하여 모든 열을 연속적으로 반환합니다. –

관련 문제