2015-12-14 36 views
1

我正在嘗試使用python遷移一些數據。我需要測試看看是否有特定的列,然後如果單元格值是一個值,則更改爲特定的其他值。所以我的問題是,如何做座標測試。如何在Python中測試單元格座標以更改數據?

我正在使用python和excel。我需要讀取excel文件,然後對數據進行更改,並輸出新的,更改的excel文件。 我使用Python和PyCharm,現在嘗試使用openpyxl。我試過xlrd/xlwt,並嘗試用csv做。要將數據從sql轉換爲excel文件,然後進行更改 - 這似乎是最簡單的方法。

因此,例如,在具體的情況下,我在第4欄爲性別。所以我嘗試僅指定第4列。舊數據的值爲「男性」或「女性」新數據需要爲數字代碼,男性爲1,女性爲2。

for cellObj in row: 
    if cellObj.coordinate == [4:row]: 
     if cellObj.value == 'Male': 
      cellObj.value = 1 
     elif cellObj.value == 'Female': 
      cellObj.value = 2 

(對不起,我試圖讓對問題的權利的格式,但代碼並不顯示相同。)

此代碼是不正確的。我不明白如何做到這一點。我有本書Automation The Alive Sweeper蟒蛇工具。我一直在尋找論壇和博客,但你一定知道確切的座標。這就是爲什麼我嘗試使用特定的第4列,而不是在代碼中測試以查看我需要的列。

編輯:

我無法添加到commant。這裏是所有的代碼。現在只獲得1排。

wb = openpyxl.load_workbook(file_location) 
sheet = wb.worksheets[0] 
for cellObj in sheet.rows[0]: 
    print(cellObj.value), 
    print(' | '), 
for row in sheet.iter_rows(): 
    for row_count, cellObj in enumerate(row): 
     if cellObj.coordinate == 'E{}'.format(row_count): 
      print row_count 
      print(cellObj.value), 
      if cellObj.value == 'Male': 
      cellObj.value = 1 
      print(cellObj.value) 
      elif cellObj.value == 'Female': 
      cellObj.value = 2 
      print(cellObj.value) 

我添加和更改sheet.iter_rows ....這這裏:OpenPyXL + How can I search for content in a cell in Excel, and if the content matches the search criteria update the content? 但是,這也不行。在for循環,我不能這樣做:

for i in sheet: 
    do this for each row "i" 

該格式不工作?

另外,在這裏:OpenPyXL + How can I search for content in a cell in Excel, and if the content matches the search criteria update the content? 有人說可以做sheet.rows()遍歷每一行,但這又給出了元組錯誤。 類型錯誤: '元組' 對象不是可調用

回答

1

編輯

您的更新後,這似乎是一個更好的解決方案:

for row in sheet.iter_rows(): 
    for cellObj in row: 
     if cellObj.column == 'E': 
      # do something 

老答案

座標是形式爲A1。你需要測試這樣的事情:

for row_count, cellObj in enumerate(row, 1): 
    if cellObj.coordinate == 'D{}'.format(row_count): 
+0

好的,謝謝你的MikeMüller。我想我正在嘗試像Python數組一樣。 Excel似乎工作不同。我明白。我的代碼確實有效,但我似乎無法通過行。它只給了我第一排。 For循環似乎沒有像我期望的那樣工作。這裏是 – stahna

+0

完美!那是我一直在尋找的。再次感謝你!我現在正在努力工作,我期望和想要的。 – stahna

相關問題