2017-02-20 108 views
-1

我是openpyxl的新手,用於將數據寫入excel。我實際上正在開發一個腳本,該腳本從動態網站中取消數據並將其保存爲excel。以下是將數據保存到Excel工作表的代碼。無法將數據分配給Worksheet.TypeError:'WriteOnlyWorksheet'對象沒有屬性'__getitem__'

from openpyxl import Workbook 
from openpyxl import load_workbook 

try: 
    wb = Workbook("MyData.xlsx") #Open Existing workbook 

except: 
    wb = load_workbook("MyData.xlsx") #Open Existing workbook 


wb.create_sheet("Trip Details") # Creating a Worksheet 
trips_ws = wb.get_sheet_by_name("Trip Details") 

row = 1 
column = 0 

trips_ws.column_dimensions['A'].width = 20 
trips_ws.column_dimensions['F'].width = 40 
trips_ws.column_dimensions['G'].width = 40 

trips_ws['A1'] = 'Date' 
trips_ws['B1'] = "Time" 
trips_ws['C1'] = "Fare" 
trips_ws['D1'] = "TripTime" 
trips_ws['E1'] = "Distance" 
trips_ws['G1'] = "PICKUP" 
trips_ws['H1'] = "DROP" 

但這正顯示出我的錯誤:

Traceback (most recent call last): 
File "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 
2016.3.2\helpers\pydev\pydevd.py", line 1596, in <module> 
globals = debugger.run(setup['file'], None, None, is_module) 
File "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 
2016.3.2\helpers\pydev\pydevd.py", line 974, in run 
pydev_imports.execfile(file, globals, locals) # execute the script 

File "C:/Users/manje_000/PycharmProjects/test\Add2Excel.py", line 54, in Add_to_excel 
trips_ws['A1'] = 'Date' 
TypeError: 'WriteOnlyWorksheet' object does not support item assignment 

搜索了這個有很多,但沒有發現任何東西。儘管按照正確的程序,任何人都可以告訴問題是什麼。

回答

1

的問題是該行

wb = Workbook("MyData.xlsx") #Open Existing workbook 

你不能打開使用class Workbook(...)一個現有的工作簿。
唯一的參數是class Workbook(write_only=True|False)

嘗試沒有字符串:wb = Workbook()

From the Docs在只寫工作簿時,行只能與追加加入()。使用cell()或iter_rows()在任意位置寫入(或讀取)單元是不可能的。

如果您希望將數據添加到現有的工作簿:

實例到工作表添加到現有的工作簿和工作 寫入字符串「日期」到單元格「A1」

wb = load_workbook("MyData.xlsx") #Open Existing workbook 
trips_ws = wb.create_sheet("Trip Details") # Append a new Worksheet 
trips_ws['A1'] = 'Date' 
wb.save("MyData.xlsx") 

回來並將您的問題標記爲已回答,如果這對您有用或評論爲什麼不回答。

+0

這是'try ... except'塊所覆蓋的。我們必須假設代碼不完整。 –

+0

嘗試了這個沒有'try ... except'塊,'class Workbook'不會抱怨'String'的值。調試告訴'Workbook.write_only =「MyData.xlsx」'。所以他得到了一個'WriteOnlyWorksheet'。 – stovfl

+0

感謝Stovfl的回覆。但我想補充一點,我想打開現有的工作簿來保存數據。我建議您將創建一個新的。 –

相關問題