2013-08-30 22 views
6

Próbuję otworzyć plik excela .xlsx z pythonem, ale nie jestem w stanie znaleźć sposobu, próbowałem używać pand, ale chcę korzystać z biblioteki o nazwie NumPy Próbowałem zainstalować numpy, ale nadal nie można znaleźć numpy.Otwieranie i odczytywanie pliku excel .xlsx w pythoniu

Ja również próbowałem za pomocą xlrd bibliotekę, ale pojawia się następujący traceback:

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 

które zakładam, że jest, bo nie może czytać XLRD .xlsx pliki?

Ktoś ma jakieś pomysły?

EDIT:

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' obsługuje' xlsx', spróbuj modernizacji: 'pip zainstalować xlrd --upgrade'. – alecxe

+0

@alecxe Dziękuję za odpowiedź, próbuję tego w tej chwili. Patrzę również na eksportującą ścieżkę csv. – Ryflex

+0

lepiej utworzyć osobny wątek dla nowego pytania, imho. – alecxe

Odpowiedz

11

Być może można wyeksportować do pliku .xlsx csv?

Następnie można spróbować:

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

ta może być użyteczna: http://docs.python.org/2/library/csv.html#csv.reader

nadzieję, że pomoże!

EDIT:

Jeśli chcesz zlokalizować komórkę spectific, takich jak F13, można zrobić listę zagnieżdżoną jak matryca i im odnosić się do każdego elementu:

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

a następnie uzyskać do F13 z matrix[5][12].

P.S .: Nie testowałem tego. Jeśli "wiersz" jest listą z każdą komórką jako elementem, nadal dodajesz wszystkie linie do macierzy, więc pierwszy indeks jest numerem wiersza, a drugi jest numerem kolumny.

+0

Tak, poszedłem tą trasą w tym samym czasie, co robię to w inny sposób, problem polega na tym, że próbuję zlokalizować potrzebne dane w każdym wierszu/komórce Edytowałem mój pierwotny wpis z tym, co zrobiłem wcześniej – Ryflex

+0

Jeśli chcesz uzyskać dostęp do jednej konkretnej komórki w macierzy, możesz wypróbować moją edycję powyżej. –

2

wydaje się, że jesteś na Linux Distro. Miałem ten sam problem i nie dzieje się tak z biblioteką "xlwt", ale tylko z "xlrd". to, co zrobiłem, nie jest właściwą metodą rozwiązania tego problemu, ale sprawia, że ​​rzeczy działają na jakiś czas, mam nadzieję, że wkrótce uzyskają odpowiedź na to pytanie: zainstalowałem "xlrd" na Windowsie i wziąłem folder i wkleiłem go na Linuksie w katalog, w którym znajduje się mój kod Pythona i zadziałało.

Powiązane problemy