2016-10-23 30 views
-2

Excelのセルにデータがある場合にのみ、ウェブサイトのさまざまなフィールドにデータを入力するコードを作成しています。TypeError: 'generator'オブジェクトには、Pythonの '__getitem__'属性はありません。

import openpyxl 
import pyautogui 
import pyperclip 
import time 
def copy(): 
    pyautogui.keyDown('ctrl') 
    pyautogui.press('c') 
    pyautogui.keyUp('ctrl') 
excelWorkbook = openpyxl.load_workbook('orderCodes.xlsx') 
sheet = excelWorkbook.get_sheet_by_name('Sheet1') 

for i in sheet.columns[1]: 
    info=sheet['A'+i].value 
    pyautogui.moveTo(305, 669, duration=0.25) 
    pyautogui.click() 
    pyautogui.typewrite(info) 
    pyautogui.moveTo(295, 702, duration=0.25) 
    pyautogui.click() 
    pyautogui.typewrite('100') 
    pyautogui.moveTo(217, 738, duration=0.25) 
    pyautogui.click() 
    time.sleep(1) 
    pyautogui.moveTo(1521, 515, duration=0.25) 
    pyautogui.dragTo(1531, 518, duration=0.25) 
    quantity=copy() 
    sheet['B'+i]=quantity 

が、私はこのエラーを取得:これは私のコードです

for i in sheet.columns[1]: 
TypeError: 'generator' object has no attribute '__getitem__' 

私はこれを得るのはなぜ?

+3

エラートレースバック全体を含める必要があります。 –

+0

sheet.columnsはジェネレータであり、インデックス作成をサポートしていません。つまり、openpyxlのドキュメントは何を表していますか? – wwii

+0

代わりに[worksheet.iter_rows](http://openpyxl.readthedocs.io/en/default/api/openpyxl.worksheet.worksheet.html?highlight=sheet.columns#openpyxl.worksheet.worksheet.Worksheet.iter_rows)を使用してくださいまたは '' 'Workseet ['A']' ''で、最初の列のタプルを返す必要があります。 -http://openpyxl.readthedocs.io/en/2.4/tutorial.html#accessing-many-cells – wwii

答えて

4

sheet.columnsはジェネレータであり、__getitem__できません。 ([]を使って何かを取得してみてください)

for i in sheet.columns: 
関連する問題