2017-12-10 4 views
1

일부 셀의 값을 복사하려고하는데이 오류가 발생합니다. 심지어 def 셀 (x, y)을 사용하지 않고도 오류가 있지만 여전히 같은 오류가 발생했습니다.한 시트에서 다른 시트로 값을 복사하는 중 오류가 발생했습니다.

learn_tar.cell(row=learn_tar, column=1).value = sheet.cell(row=learn_tar, column=1).value 
AttributeError: 'int' object has no attribute 'cell' 

출처 :

오류입니다

import openpyxl 

def cell(x,y): 
    cell = sheet.cell(row=x,column=y).value 
    return cell; 

def percentage(percent, whole): 
    return int((percent * whole)/100.0); 


ex = openpyxl.load_workbook("Final_excel2.xlsx") 
sheet = ex.get_sheet_by_name('Sheet1') 

num = [0,0,0] 
per = [0,0,0] 

for row in range(2,4798): 

    if cell(row,1) == '1: Progression': 
     num[0] = num[0] + 1 
    elif cell(row,1) == '2: Incidence': 
     num[1] = num[1] + 1 
    elif cell(row,1) == '3: Non-exposed control group': 
     num[2] = num[2] + 1 

    for column in range(2,49): 
     #doing stuff 

per[0] = percentage(70,num[0]) 
per[1] = percentage(70,num[1]) 
per[2] = percentage(70,num[2]) 

learn_att = ex.create_sheet('Learn-Att',2) 
learn_tar = ex.create_sheet('Learn-Tar',3) 

test_att = ex.create_sheet('Test-Att',4) 
test_tar = ex.create_sheet('Test-Tar',5) 

learn_att = 1 
learn_tar = 1 

test_att = 1 
test_tar = 1 



for row in range(2,4798): 

    if row<=1391: 
     if row<=974:     
      learn_tar.cell(row=learn_tar, column=1).value = cell(row,1) 
      learn_att+= 1 
      learn_tar+= 1 
     else: 
      test_tar.cell(row = test_tar,column = 1).value = cell(row,1) 
      test_att+= 1 
      test_tar+= 1 

    for column in range(2,49): 

     if row<=1391: 
      if row<=974:     
       learn_att.cell(row = learn_att,column = column - 1).value = cell(row,column) 
      else: 
       test_att.cell(row = test_att,column = column - 1).value = cell(row,column) 
+0

iter_rows()를 사용하면 코드가 더 간단해질 것입니다. –

답변

2

당신은 무시 learn_tar1과 :

learn_tar = ex.create_sheet('Learn-Tar',3) 
... 
learn_tar = 1 

제거 :

learn_tar = 1 

과 : 코드에서

learn_tar+= 1 

.

관련 문제