2010-05-31 8 views
81

Was ist der beste Weg ist, Excel (XLS) Dateien mit Python (nicht CSV-Dateien) zu lesen.Lese/Parsen von Excel (xls) Dateien mit Python

Gibt es ein eingebautes in Paket, das standardmäßig in Python unterstützt wird, diese Aufgabe zu tun?

+1

möglich Duplikat [die Bibliothek sollte ich verwenden, um eine XLS von Linux zu schreiben/Python?] (Http://stackoverflow.com/questions/245225/which-library-should-i-use-to-write-an-xls-from-linux-pyt hon) – voyager

+13

@voyager: Er will Dateien lesen nicht schreiben –

Antwort

1

Sie eine der Bibliotheken verwenden können listed here (wie Pyxlreader, die auf JExcelAPI basiert, oder xlwt) sowie COM automation to use Excel itself für das Lesen der Dateien, sondern auch für das Office als Abhängigkeit Ihrer Software einführen, die möglicherweise nicht immer eine Option sein.

+6

(1) Pyxlreader ist die absolute Pox. Du darfst es nie versucht haben. Siehe meine Kommentare hier: http://stackoverflow.com/questions/1243545/programmatisch-extract-data-from-an-excel-spreadsheet (2) 'xlwt' WriTes Dateien; Verwenden Sie 'xlrd' für ReaD-Dateien. –

70

Ich empfehle xlrd sehr .xls Dateien zum Lesen.

voyager erwähnt die Verwendung von COM-Automatisierung. Nachdem ich das vor ein paar Jahren selbst gemacht habe, sei gewarnt, dass dies eine echte PITA ist. Die Anzahl der Vorbehalte ist groß und die Dokumentation fehlt und ist ärgerlich. Ich stieß auf viele seltsame Bugs und Gotchas, von denen einige viele Stunden brauchten, um es herauszufinden.

UPDATE: Für neuere .xlsx Dateien scheint die empfohlene Bibliothek zum Lesen und Schreiben openpyxl zu sein.

+3

Für Excel 2007+ Dateien ('.xlsx') würden Sie wahrscheinlich [OpenPyXL] (http://openpyxl.readthedocs.org/) verwenden. –

1

Sie auch die (nicht-Python) Programm xls2csv laufen betrachten könnten. Feed es eine XLS-Datei, und Sie sollten eine CSV zurück.

+3

Aber das Poster sagt, dass er in Python lesen muss ... Schlägst du vor, 'xls2csv' zu laufen, dann die' csv' aus Python zu analysieren? – Hbcdev

+0

Python-Excelerator enthält einen ausführbaren py_xls2csv-Wrapper um einen Python-Konverter. –

0

Für ältere Excel-Dateien gibt es die OleFileIO_PL module, die das OLE-strukturierte Speicherformat verwendet lesen kann.

9

Python xlrd Bibliothek kann eine bessere Lösung für dieses Problem

import xlrd 

eine Arbeitsmappe

workbook = xlrd.open_workbook('your_file_name.xlsx') 

offenes Blatt zu öffnen, indem Name

worksheet = workbook.sheet_by_name('Name of the Sheet') 

offene Blatt durch den Index

worksheet = workbook.sheet_by_index(0) 

lesen Zellenwert

worksheet.cell(0, 0).value  
13

Mit Pandas:

import pandas as pd 

xls = pd.ExcelFile("yourfilename.xls") 

sheetX = xls.parse(2) #2 is the sheet number 

var1 = sheetX['ColumnName'] 

print(var1[1]) #1 is the row number... 
Verwandte Themen