2013-08-30 42 views
6

Bir excel .xlsx dosyasını python ile açmaya çalışıyorum ama bunu yapmanın bir yolunu bulamıyorum, pandaları kullanmayı denedim ama bir kitaplık kullanmak istiyorum NumPy denilen numarayı yüklemeyi denedim ama hala bulamıyorum.Python'da bir excel .xlsx dosyasını açma ve okuma

Ben de xlrd kitaplığı kullanarak denedim ama şu Traceback olsun: XLRD dosyalarını .xlsx okuyamaz çünkü varsayalım

Traceback (most recent call last): 
    File "C:\test.py", line 3, in <module> 
    book = open_workbook('test.xlsx') 
    File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 370, in open_workbook 
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS) 
    File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1323, in getbof 
    raise XLRDError('Expected BOF record; found 0x%04x' % opcode) 
XLRDError: Expected BOF record; found 0x4b50 

mı?

Herhangi bir fikri olan var mı?

DÜZENLEME:

import csv 
with open('test.csv', 'rb') as csvfile: 
    data = csv.reader(csvfile, delimiter=',') 
    for row in data: 
     print "------------------" 
     print row 
     print "------------------" 
     for cell in row: 
      print cell 
+6

'xlrd' destekler' xlsx' kullanın: 'xlrd --upgrade' yüklemek pip. – alecxe

+0

@alecxe Cevabınız için teşekkürler, şu anda bunu deniyorum. Ayrıca csv rotasına ihracata bakıyorum. – Ryflex

+0

yeni soru için ayrı bir ileti dizisi daha iyi oluruz, imho. – alecxe

cevap

11

Belki bir .csv dosyasına .xlsx dışa olabilir?

Sonra deneyebilirsiniz:

import csv 
with open('file.csv','rb') as file: 
    contents = csv.reader(file) 
    [x for x in contents] 

yararlı olabilir: yardımcı http://docs.python.org/2/library/csv.html#csv.reader

Umut!

DÜZENLEME: Eğer böyle F13 gibi bir spectific hücresini bulup istiyorsanız

, bir matrisin yuvalanmış bir liste yapabilir ve onları her öğe bakın: o zaman

import csv 
with open('file.csv','rb') as file: 
    contents = csv.reader(file) 
    matrix = list() 
    for row in contents: 
     matrix.append(row) 

Ve erişim F13 matrix[5][12] ile.

P.S .: Bunu test etmedim. "Satır" her hücre ile bir öğe olarak bir liste ise, tüm satırları matrise eklemeye devam edersiniz, böylece ilk dizin satır numarasıdır ve ikincisi sütun numarasıdır. Bir Linux Distro'da olduğunuz anlaşılıyor.

+0

Evet, o rotaya gittim aynı zamanda sorunu çözdüğüm kadarıyla her satır/hücre içinde ihtiyacım olan veriyi bulmakta zorlanıyorum Daha önce yaptığım şeyle orijinal gönderiyi düzenledim – Ryflex

+0

Matristeki belirli bir hücreye erişmek istiyorsanız, yukarıdaki düzenlemeyi deneyebilirsiniz. –

2

Ben de aynı sorunu yaşadım ve bu "xlwt" kütüphanesinde değil, sadece "xlrd" ile gerçekleşiyor. Yaptığım şey bu problemi çözmenin doğru yolu değil, ama yakında bu soruyu bir cevabın olması için bir şeyler yapıyor, Windows'a "xlrd" yi yükledim ve klasörü aldım ve Linux’a yapıştırdım. python kodumun bulunduğu dizin ve çalıştı. Sen nasıl güzel bir dökümünü almak için aşağıdaki okuyabilir

Sen (otomatik orada değil) https://pypi.python.org/pypi/openpyxl

aşağıdaki modülü yükleyebilirsiniz -