2016-07-27 7 views
5

में सभी पंक्तियों के माध्यम से पुन: प्रयास करें, मैं यह नहीं समझ सकता कि ओपनपीएक्सएल के साथ निर्दिष्ट कॉलम में सभी पंक्तियों के माध्यम से पुनरावृत्ति कैसे करें।विशिष्ट कॉलम ओपनपीएक्सएल

मैं स्तंभ 'सी' में सभी पंक्तियों के लिए कक्ष मान के सभी प्रिंट करना चाहते हैं

अभी मेरे पास है:

from openpyxl import workbook 
path = 'C:/workbook.xlsx' 
wb = load_workbook(filename = path) 
ws=wb.get_sheet_by_name('Sheet3') 

for row in ws.iter_rows(): 
    for cell in row: 
     if column == 'C': 
      print cell.value 
+0

'ws' क्या है? आपने 'openpyxl' का उपयोग कैसे किया? कृपया उस लक्ष्य के बारे में कुछ और विवरण दें जो आप प्राप्त करने की कोशिश कर रहे हैं या अन्यथा हर उत्तर धारणाओं पर आधारित होगा। – danielhadar

उत्तर

8

आप ऐसी श्रेणी निर्दिष्ट कर सकते हैं ws.iter_rows() साथ अधिक तेज़ी से दोहराने में:

import openpyxl 

wb = openpyxl.load_workbook('C:/workbook.xlsx') 
ws = wb.get_sheet_by_name('Sheet3') 
for row in ws.iter_rows('C{}:C{}'.format(ws.min_row,ws.max_row)): 
    for cell in row: 
     print cell.value 

संपादित करें: चार्ली क्लार्क प्रति आप बारी-बारी से उपयोग कर सकते हैं ws.get_squared_range():

# ... 
    ws.get_squared_range(min_col=1, min_row=1, max_col=1, max_row=10) 
# ... 

संपादित करें 2: अपनी टिप्पणी प्रति आप एक सूची में कक्ष मान हैं:

import openpyxl 

wb = openpyxl.load_workbook('c:/_twd/2016-06-23_xlrd_xlwt/input.xlsx') 
ws = wb.get_sheet_by_name('Sheet1') 
mylist = [] 
for row in ws.iter_rows('A{}:A{}'.format(ws.min_row,ws.max_row)): 
    for cell in row: 
     mylist.append(cell.value) 
print mylist 
+0

सही! यही वही था जो मैं खोज रहा था, बहुत धन्यवाद! –

+0

आपका बहुत स्वागत है। कृपया इस जवाब को हरे रंग के चेकमार्क के साथ स्वीकार करने पर विचार करें। – bernie

+1

'ws.get_squared_range()' आपको संख्यात्मक सीमाओं का उपयोग करने देगा। केवल-पढ़ने योग्य मोड में 'ws.max_row' उपलब्ध नहीं हो सकता है। openpyxl 2.4 में एक बेहतर एपीआई है। –

4

आप क्यों नहीं बस से अधिक स्तंभ 'सी' पुनरावृति नहीं कर सकते हैं (संस्करण 2.4.7):

for cell in ws['C']: 
    print cell.value 
संबंधित मुद्दे