2010-05-31 20 views
81

¿Cuál es la mejor manera de leer archivos de Excel (XLS) con Python (no CSV archivos).de lectura/analizar archivos Excel (XLS) con Python

¿Hay un paquete integrado que es apoyada por defecto en Python para realizar esta tarea?

+1

posible duplicado de [qué biblioteca debería usar para escribir un XLS desde Linux/Python?] (Http://stackoverflow.com/questions/245225/which-library-should-i-use-to-write-an-xls-from-linux-pyt hon) – voyager

+13

@voyager: quiere LEER archivos no escribirlos –

Respuesta

1

Puede utilizar cualquiera de las bibliotecas listed here (como Pyxlreader que se basa en JExcelApi o xlwt), además de COM automation to use Excel itself para la lectura de los archivos, pero para eso se está introduciendo Oficina como una dependencia de su software, lo que podría no ser siempre una opción.

+6

(1) pyxlreader es la viruela absoluta. No debes haberlo probado nunca. Vea mis comentarios aquí: http://stackoverflow.com/questions/1243545/programmatically-extract-data-from-an-excel-spreadsheet (2) 'xlwt' WriTes files; use 'xlrd' para los archivos ReaD. –

70

Recomiendo encarecidamente xlrd para leer .xls archivos.

voyager mencionó el uso de la automatización COM. Habiendo hecho esto yo mismo hace unos años, ten en cuenta que hacer esto es un verdadero PITA. El número de advertencias es enorme y la documentación es deficiente y molesta. Me encontré con muchos bichos y errores extraños, algunos de los cuales tardaron muchas horas en descifrar.

ACTUALIZACIÓN: Para los archivos más nuevos .xlsx, la biblioteca recomendada para lectura y escritura parece ser openpyxl.

+3

Para archivos de Excel 2007+ ('.xlsx') probablemente use [OpenPyXL] (http://openpyxl.readthedocs.org/). –

1

También puede considerar que ejecuta el (no pitón) xls2csv programa. Aliméntalo con un archivo xls, y deberías obtener un csv.

+3

Pero el cartel dice que necesita leer en Python ... ¿Sugiere ejecutar 'xls2csv', y luego analizar' csv' desde Python? – Hbcdev

+0

Python-excelerator contiene un contenedor ejecutable py_xls2csv alrededor de un convertidor python. –

0

Para más viejos archivos de Excel no es el OleFileIO_PL module que puede leer el formato de almacenamiento estructurado OLE utilizado.

9

Python puede mejor solución para este problema

import xlrd 

para abrir un libro

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

hoja abierta por nombre

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

hoja abierta por el índice

worksheet = workbook.sheet_by_index(0) 

leer valor de la celda

worksheet.cell(0, 0).value  
13

Uso de los 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... 
Cuestiones relacionadas