2012-12-07 63 views
0

我有這個python腳本,應該從目錄中打開一個excel工作簿,然後更改第一個工作表的名稱,然後運行存儲過程在第一個工作表和隨後的工作表上。 當我運行腳本時,它給了我一個錯誤 - 'str'對象屬性'title'是隻讀的。任何幫助或建議表示讚賞。python腳本打開excel工作簿,並更改第一個工作表的名稱並執行存儲過程

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() 

這裏是回溯:

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

請,原地滿回溯:

>>> '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。 – Denis

+0

CS NOV20 12.xlsx 回溯(最近一次調用): 文件 「HSRXRecons.py」 25行,在 worksheet.title = 「Sheetone」 AttributeError的: '海峽' 對象屬性 '標題' 是隻讀 –

回答

2

worksheet是一個字符串,因爲get_sheet_names()返回一個字符串列表。您不能將屬性分配給字符串。這裏

workbook.get_sheet_by_name(worksheet).title = "Sheetone" 
相關問題