2016-10-23 10 views
0

私は、スプレッドシートから情報を抽出し、autopyguiとopenpyxlを使ってLibreオフィスの作家でレポートとして提示するスクリプトを作成しようとしている初心者です。私の試み:原因 "COL" と "行" の形式に私は思うExcelを抽出する - beginner

> Traceback (most recent call last): File "a.output.py", line 30, in 
> <module><br> 
>  pyautogui.typewrite(sheet[col, str(row)].value) File "/home/m/.local/lib/python3.5/site-packages/openpyxl/worksheet/worksheet.py", 
> line 354, in __getitem__<br> 
>  min_col, min_row, max_col, max_row = range_boundaries(key) File "/home/m/.local/lib/python3.5/site-packages/openpyxl/utils/cell.py",<br> 
> line 127, in range_boundaries<br> 
>  m = ABSOLUTE_RE.match(range_string) TypeError: expected string or bytes-like object<br> 
> [email protected]:~/python-stuff/projects/04-Asistente 
> corrección$ python3 a.output.py Traceback (most recent call last): 
> File "a.output.py", line 30, in <module><br> 
>  pyautogui.typewrite(sheet[str(col), str(row)].value) File "/home/m/.local/lib/python3.5/site-packages/openpyxl/worksheet/worksheet.py", 
> line 354, in __getitem__<br> 
>  min_col, min_row, max_col, max_row = range_boundaries(key) File "/home/m/.local/lib/python3.5/site-packages/openpyxl/utils/cell.py", 
> line 127, in range_boundaries<br> 
>  m = ABSOLUTE_RE.match(range_string) <br> TypeError: expected string or bytes-like object<br> 

は次のとおりです。

from subprocess import call 
import openpyxl, pyautogui 

call("libreoffice") 
calcfile = "calcexample.xlsx" 

pyautogui.hotkey('alt', 'tab') # focus on Writer 
wb = openpyxl.load_workbook(calcfile) # open xml file 
sheet = wb.get_sheet_by_name('Sheet1') # open sheet X, to print specific cells 
print = ("Reading calc file...") 

# trying to write cells as text in the doc 
for row in range(2, sheet.max_row): 
    for col in range (2, 6): 
     pyautogui.typewrite(sheet[col, row].value) 
     pyautogui.typewrite('enter') 

は、私はこのエラーを取得します。私はstr()を使用して結果を得ようとしませんでした。私はここでかなり基本的なものを見逃しているが、何が分からないのか分かっている。私の質問:

  1. エラーメッセージの処理方法。
  2. ファイルから直接読み書きすることはできますか、辞書に値を追加してそこから取得する方が効率的/優雅になりますか?
+1

をトレースバックで完全なエラーメッセージを見て(そして私たちに見せてください)。このエラーがどこで発生したのかは明らかではありません。 –

+0

エラーメッセージ全体を追加しました。 –

答えて

0

セルは、sheet[col, row]としてアクセスされることはありません。なぜそれを仮定しましたか?

sheet['A4'] 

またはcellメソッドを使用します:tutorialとして場所を指定する単一の文字列を使用し、言う「エラーメッセージに対処する方法」

sheet.cell(row=row, column=col) 
関連する問題