2008-09-23 8 views
11

मेरा मुद्दा नीचे है लेकिन xlrd के साथ अनुभव वाले किसी भी व्यक्ति से टिप्पणियों में दिलचस्पी होगी।xlrd का उपयोग कर पाइथन में एक्सेल फ़ाइल को मैं कैसे पढ़ूं? क्या यह नए कार्यालय प्रारूपों को पढ़ सकता है?

मुझे अभी एक्सएलआरडी मिली है और यह सही समाधान की तरह दिखता है लेकिन मुझे एक छोटी सी समस्या शुरू हो रही है।

जब मैं फ़ाइल को खोलने के असंशोधित मैं एक बुरा बीआईएफएफ त्रुटि मिलती है (बाइनरी फॉर्मेट नहीं: मैं डेटा प्रोग्राम के Excel फ़ाइल मैं डॉव जोन्स औद्योगिक औसत (http://www.djindexes.com/mdsidx/?event=showAverages लिंक) के मौजूदा घटकों के साथ डाओ जोन्स से खींचा से निकालने के लिए प्रयास कर रहा हूँ मान्यता प्राप्त)

आप इस स्क्रीनशॉट Excel 2008 मैक के लिए सोचता है कि यह एक्सेल 1997-2004 'प्रारूप में है (स्क्रीनशॉट में देख सकते हैं हालांकि: http://skitch.com/alok/ssa3/componentreport-dji.xls-properties)

अगर मैं बजाय एक्सेल मैन्युअल रूप में खोलने और' के रूप में बचाने के लिए एक्सेल 1997-2004 'स्पष्ट रूप से प्रारूप, फिर पाइथन usig xlrd में खोलें, सब कुछ अद्भुत है। याद रखें, कार्यालय सोचता है कि फ़ाइल पहले से ही 'एक्सेल 1997-2004' प्रारूप में है। http://pastie.textmate.org/private/jbawdtrvlrruh88mzueqdq

पर कोई विचार:: कैसे फ़ाइल तो मैं डेटा निकाल सकते हैं पहचानने में xlrd चाल करने के लिए सभी फाइलें .xls

यहाँ एक IPython सत्र मुद्दा नकल की pastebin है कर रहे हैं? xlrd स्वीकार किए जाने वाले स्पष्ट 'सेव करें' प्रारूप को स्वचालित करने के लिए पायथन का उपयोग कैसे करें? योजना बी? (नीचे नीचे देखो):

उत्तर

0

खैर यहाँ कुछ कोड है कि मैंने किया है here

नए स्वरूप के बारे में सुनिश्चित नहीं हैं - अगर xlrd यह नहीं पढ़ सकते हैं, xlrd एक नया संस्करण जारी करने की आवश्यकता है!

-1

क्या आपको xlrd का उपयोग करना है? मैंने अभी उस वेबसाइट से 'अद्यतन - डाउ जोन्स औद्योगिक औसत मूवर्स - 2008' डाउनलोड किया है और pyExcelerator के साथ इसे पढ़ने में कोई परेशानी नहीं है।

import pyExcelerator 
book = pyExcelerator.parse_xls('DJIAMovers.xls') 
+0

नहीं xlrd से शादी नहीं। अब pyExcelerator को देखने के लिए जा रहा है ... –

+0

pyExcelerator के लिए बहुत अधिक प्रलेखन प्रतीत नहीं होता है। क्या आप शायद मुझे फाइल खोलने और डेटा निकालने की मूल बातें दिखा सकते हैं? –

1

pyExcelerator पर अधिक जानकारी: एक फाइल पढ़ने के लिए, ऐसा करते हैं:

import pyExcelerator 
book = pyExcelerator.parse_xls(filename) 

जहां फ़ाइल नाम एक स्ट्रिंग है कि फ़ाइल नाम पढ़ने के लिए (नहीं एक फ़ाइल जैसी वस्तु) है। यह आपको कार्यपुस्तिका का प्रतिनिधित्व करने वाली एक डेटा संरचना प्रदान करेगा: जोड़े की एक सूची, जहां जोड़ी का पहला तत्व वर्कशीट नाम है और दूसरा तत्व वर्कशीट डेटा है।

वर्कशीट डेटा एक शब्दकोश है, जहां कुंजी (पंक्ति, कॉल) जोड़े (0 से शुरू हो रही हैं) और मान सेल सामग्री हैं - आम तौर पर int, float, या स्ट्रिंग। तो, उदाहरण के लिए, सभी डेटा पहले कार्यपत्रक पर होने का सरल मामले में:

data = book[0][1] 
print 'Cell A1 of worksheet %s is: %s' % (book[0][0], repr(data[(0, 0)])) 

तो सेल खाली है, तो आप एक KeyError मिलेगा। यदि आप तिथियों से निपट रहे हैं, तो वे (मैं भूल सकता हूं) पूर्णांक या फ्लोट के माध्यम से आते हैं; यदि यह मामला है, तो आपको कन्वर्ट करने की आवश्यकता होगी। असल में नियम है: datetime.datetime (1899, 12, 31) + datetime.timedelta (days = n) लेकिन यह 1 या 2 से बंद हो सकता है (क्योंकि एक्सेल 1 9 00 को लोटस के साथ संगतता के लिए लीप-वर्ष के रूप में मानता है, और क्योंकि मुझे याद नहीं है कि 1 9 00-1-1 0 या 1 है), तो कुछ परीक्षण-और-त्रुटि जांचने के लिए करें। समय-समय पर फ्लोट्स के रूप में संग्रहीत किया जाता है, मुझे लगता है (दिन के दिन और अंश)।

मुझे लगता है कि फ़ोरमूलस के लिए आंशिक समर्थन है, लेकिन मैं कुछ भी गारंटी नहीं दूंगा।

+3

pyExcelerator में कई ज्ञात बग हैं - 'xlrd' कांटा संगत और बनाए रखा है। – mikemaccana

3
कार्यालय 2007/2008 (OpenXML) प्रारूप के लिए

xlrd समर्थन अल्फा परीक्षण में है - अजगर-एक्सेल समाचार समूह में निम्नलिखित पोस्ट देखें: http://groups.google.com/group/python-excel/msg/0c5f15ad122bf24b?hl=en

+1

जॉन माचिन ने इसे सार्वजनिक रूप से (मेलिंग सूची में) जारी किया है और इसने वर्ष के अंत में xlrd की एक नई पूर्ण रिलीज में एकीकृत करने के लिए ठोस योजनाएं व्यक्त की हैं। –

+0

यह कुछ दिनों पहले v0.8 में जारी किया गया है: https://groups.google.com/forum/?fromgroups#!topic/python-excel/w2AoQkX3TZc[1-25] – RuiDC

26

Fwiw, मैं xlrd के लेखक, और देखभाल करने वाले कर रहा हूँ xlwt (pyExcelerator का एक कांटा)। कुछ बिंदु:

  1. फ़ाइल घटक रिपोर्ट-डीजेआई.एक्सएल का गलत नाम है; यह एक एक्सएलएस फ़ाइल नहीं है, यह एक टैब से अलग-मूल्य फ़ाइल है। इसे एक टेक्स्ट एडिटर (उदा। नोटपैड) के साथ खोलें और आप देखेंगे कि मेरा क्या मतलब है। तुम भी अजगर के साथ नहीं-बहुत-कच्चे कच्चे बाइट्स देख सकते हैं:

    >>> open('ComponentReport-DJI.xls', 'rb').read(200) 
    'COMPANY NAME\tPRIMARY EXCHANGE\tTICKER\tSTYLE\tICB SUBSECTOR\tMARKET CAP RANGE\ 
    tWEIGHT PCT\tUSD CLOSE\t\r\n3M Co.\tNew York SE\tMMM\tN/A\tDiversified Industria 
    ls\tBroad\t5.15676229508\t50.33\t\r\nAlcoa Inc.\tNew York SE\tA' 
    

    आपको यह फ़ाइल पायथन के सीएसवी मॉड्यूल का उपयोग कर पढ़ सकते हैं ... बस csv.reader() करने के लिए अपने कॉल में delimiter="\t" का उपयोग करें।

  2. xlrd किसी भी फाइल कि pyExcelerator, और उन्हें बेहतर — दिनांकों पढ़ सकते हैं तैरता के रूप में बाहर नहीं आते हैं पढ़ सकते हैं, और एक्सेल तारीखों को पूरी कहानी xlrd दस्तावेज में है।

  3. pyExcelerator — xlrd और xlwt जीवित और अच्छी तरह से छोड़ दिया गया है। http://groups.google.com/group/python-excel

HTH जॉन की जाँच करें