2012-01-18 10 views
5

खैर मेरे पास एक सवाल है कि मुझे लगता है कि मुझे यहां कई बार जवाब दिया गया है, जो मैंने यहां पाया था। हालांकि, एक नौसिखिया के रूप में, मैं वास्तव में समझ नहीं सकता कि वास्तव में एक बुनियादी ऑपरेशन कैसे करें। मैं एक .xls है और जब मैं xlrd का उपयोग एक मूल्य मैं सिर्फ sh.cell(0,0) उपयोग कर रहा हूँ प्राप्त करने के लिए (कि श संभालने मेरी चादर है)पायथन xlrd: निकाले गए मूल्य को कैसे परिवर्तित करें?

  • ;:

    यहाँ बात है

  • यदि सेल में क्या है तो एक स्ट्रिंग है मुझे text:u'MyName' जैसे कुछ मिलता है और मैं केवल स्ट्रिंग 'MyName' रखना चाहता हूं;

  • यदि सेल में क्या है तो मुझे number:201.0 जैसा कुछ मिलता है और मैं केवल पूर्णांक 201 रखना चाहता हूं।

यदि कोई मुझे इंगित कर सकता है कि मुझे केवल मूल्य निकालने के लिए क्या करना चाहिए, जैसा कि मैं चाहता हूं, धन्यवाद।

उत्तर

12

sh.cell (x, y) कक्षा कक्ष का एक उदाहरण देता है। जब आप sh.cell (x, y) प्रिंट करते हैं तो आप कक्षा के repr फ़ंक्शन को वापस कर रहे हैं (इसलिए यह प्रिंट प्रकार: मान)।

आप प्रयास करना चाहिए:

cell = sh.cell(x,y) 
print(cell.value) 

मैं इस परीक्षण नहीं कर सकते के बाद से मैं xlrd नहीं है, लेकिन मुझे लगता है कि यह प्रलेखन दिया काम करेगा: https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#sheet.Cell-class

+0

, यह मूल्य विशेषता में तार का यूनिकोड संस्करण वापस आ जाएगी, तो आप शायद डिकोड करने के लिए की आवश्यकता होगी कि आप क्या पर निर्भर करता है बस 'MyName' चाहते हैं आप 'MyName' के साथ करना चाहते हैं। – comamitc

+0

बहुत बहुत धन्यवाद। यह काम करता हैं! – clowny

+0

@comamitc: यदि आपको यूनिकोड मिला है और आप बाइट्स चाहते हैं, तो आप * एन्कोड *, नहीं * डीकोड *। लेकिन कई चीजों के लिए यह शायद यूनिकोड का उपयोग करने के लिए और अधिक समझ में आता है। –

2

आप, साथ ही xlrd का उपयोग कर मूल्यों निकाल सकते हैं पूर्ण एक्सेल सेल लौटने के बजाय:

book = xlrd.open_workbook('example.xls') 
first_sheet = book.sheet_by_index(0) 
print first_sheet.row_values(0) 

आपको पहली शीट में पहली पंक्ति के मान प्राप्त करता है।

आप पंक्तियों के साथ स्लाइस का उपयोग कर सकते हैं (और इसी तरह कॉलम के लिए)। तो एक पूरी चादर से मूल्यों को प्राप्त करने के लिए:

cells = [] 
for i in range(first_sheet.nrows): 
    cells.append(first_sheet.row_values(rowx=i,start_colx=0,end_colx=None)) 

xlrd का उपयोग कर के और अधिक सुरुचिपूर्ण तरीके हो सकता है - लेकिन यह है कि मेरे लिए काम किया।

0

इसका सही उत्तर केवल Cell.value फ़ंक्शन का उपयोग करना है। सेल में क्या है इसके आधार पर यह एक संख्या या यूनिकोड स्ट्रिंग वापस कर देगा।

0

यह आपको एक्सेल में किसी सेल की सामग्री का मूल्य देगा।

var = sh.cell(x,y) 
    print var.value 

लेकिन इस डेटा का प्रकार अभी भी 'यूनिकोड' है। एक स्ट्रिंग (ascii) में परिवर्तित करने के लिए:

var.value.encode('ascii','ignore') 
भी
संबंधित मुद्दे