2012-12-07 4 views
0

디렉토리에서 엑셀 통합 문서를 연 다음 첫 번째 워크 시트의 이름을 변경하고 저장된 첫 번째 워크 시트와 후속 워크 시트의 절차. 스크립트를 실행할 때 오류가 발생합니다. 'str'객체 속성 'title'은 읽기 전용입니다. 어떤 도움이나 제안을 주시면 감사하겠습니다. get_sheet_names() 문자열의리스트를 반환하기 때문에Excel 통합 문서를 열고 첫 번째 워크 시트의 이름을 변경하고 저장된 proc을 실행합니다

CS NOV20 12.xlsx Traceback (most recent call): 
    File "HSRXRecons.py", line 25, in <module> worksheet.title = "Sheetone" 
AttributeError: 'str' object attribute 'title' is read-only 
+1

하십시오, 장소 전체 역 추적을 여기에. – Denis

+0

CS NOV20 12.xlsx 역 추적 (가장 최근 통화) : 파일 "HSRXRecons.py", 25 행, worksheet.title = "Sheetone"에 AttributeError : 'STR'개체 속성 '제목이'읽기 전용 –

답변

2

worksheet은 문자열입니다 : 여기

import os 
import pyodbc 
import openpyxl 
from openpyxl import load_workbook 


dirList = os.listdir("""\\Raw_Data\\HSRx""") 

#database connection 
#loop through excel workbooks 
#loop through excel sheets in each workbook 
#run stored proc on each worksheet 
#close files and disconnect to sql server 
conn = pyodbc.connect('DRIVER={SQLServer};SERVER=localhost;DATABASE=mydb;UID=myname;PWD=mypwd') 
cursor = conn.cursor() 

for n in dirList: 
    path =os.path.join("""\\Raw_Data\\HSRx""",n) 
    workbook = openpyxl.reader.excel.load_workbook(path) 
    worksheets = workbook.get_sheet_names() 
    sheet = ['None','None'] 
    i = 0 
    print n 
    for worksheet in worksheets: 
     worksheet.title = "Sheetone" 
     sheet[i] = "Sheetone" 
     i += 1 
     print worksheet 
    cursor.execute("""exec SP_IMPORT_HSRx_Ins ?, ?, ?""",n,sheet[0],sheet[1]) 
    cursor.commit() 


conn.close() 

는 역 추적입니다. 문자열에 속성을 할당 할 수 없습니다.
>>> 'Sheet1'.title = 'Sheetone' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'str' object attribute 'title' is read-only 

는 제목이 get_sheet_by_name에 시트 이름을 전달 변경하려면

workbook.get_sheet_by_name(worksheet).title = "Sheetone" 
관련 문제