2016-09-27 11 views
0

既存のスプレッドシートで名前列を確認したい場合は、その行のタイムスタンプで特定の列を更新します。私はforループでこれについてどうやって行くのか分かりませんので、私はちょっとしかありません。 forループは、一致しなかった行のためにさらに多くの行を追加し、行と名前を一致させた後にスタンプするときに何も表示されません。Q:OpenPyxlで既存の行をチェックしてからセルを更新する

for rowNum in range(2, ws1.max_row): 
     log_name = ws1.cell(row=rowNum,column=1).value 
     if log_name == chkout_new_name_text: 
      print 'apple' + 'pen' 
      ws1.cell(row=rowNum, column=2).value = str(time.strftime("%m/%d/%y %H:%M %p")) 
      break 
     else: 
      continue 
      print 'pen' + 'pineapple' 
      # Normal procedure 

ご協力いただければ幸いです。

+0

をそれを考え出しましたか? –

+0

私はforループを使用すると、範囲2〜max_rowのすべてのintに対してelse文を実行します。私はifステートメントのために休憩を入れてみましたが、とにかく続けます。最初の成功後にすべてのループを停止するようにループに指示する方法はありますか? –

+0

また、範囲(2、ws1.max_row)のrowNumの場合には、max行が適切な行数を返しますが、forループは最後の数値を処理しません。これには理由がありますか?これは間違った選択ですか? –

答えて

0

は `for`ループを使用して何が悪い

name_text = raw_input("Please enter name: ") 
    matching_row_nbr = None 
    for rowNum in range(2, ws1.max_row + 1): 
     log_name = ws1.cell(row=rowNum,column=1).value 
     if log_name == name_text: 
      # Checks for a matching row and remembers the row number 
      matching_row_nbr = rowNum 
      break 
    if matching_row_nbr is not None: 
     # Uses the matching row number to change the cell value of the specific row 
     ws1.cell(row=matching_row_nbr, column=6).value = str(time.strftime("%m/%d/%y %H:%M - %p")) 
     wb.save(filename = active_workbook) 
    else: 
     # If the none of the rows match then continue with intended use of new data 
     print name_text 
関連する問題