2010-08-18 17 views
19

He buscado en google pero no encuentro una manera de leer archivos de Excel desde Objective-C. Las únicas respuestas que encuentro son convertir primero a CSV y luego leer como un archivo de texto, pero no quiero eso.Leer datos del archivo Excel en Objective-C (iPhone)

Sé que debe haber una manera, mientras que utilicé muchas veces los módulos de PHP para leer/escribir archivos de Excel, así que supongo que también hay una biblioteca C para hacerlo (que luego podría usarse en Objective-C/Aplicación de iPhone)

Entonces ... ¿alguien sabe de una biblioteca que podría usar en el iPhone?

+0

bien se parece a la respuesta después es "no hay manera" los enlaces inferiores daría a quién tiene tiempo suficiente para pasar un gran comienzo, aunque –

+0

encima comentario ya no es válido: se ha proporcionado una respuesta real a continuación :-) –

Respuesta

17

En realidad, existe un proyecto de este tipo: se llama libxls en la fuente forge. También hay una interfaz de clase ObjectiveC para el proyecto. Con este proyecto puede abrir un archivo Excel y leer la mayoría de la información en él (valores de celda así como las propiedades del archivo). También hay un iOS Objective C interface en la biblioteca.

+1

"ObjectiveC framework, funciona tanto en Mac como en iOS" es exactamente lo que estaba buscando en aquel momento ... buena respuesta –

+1

¿Puede sugerirme dónde me equivoco? Tengo descargar y compilar xlslib y agregar en mi aplicación, pero me da error como el siguiente para u16string en la definición de la función, mientras que la declaración de la función es okay.format.cpp: 122: 11: definición fuera de línea de 'format_t' no coincide cualquier declaración en 'xlslib_core :: format_t' y format.cpp: 122: 52: La referencia a 'u16string' es ambigua y format.cpp: 129: 1: id. no calificado esperado – Hindu

+1

Hay dos libs - libxls para leer archivos de Excel (tiene el marco objc) y xlslib para escribir archivos de Excel (aún no portados a iOS pero trabajando en él). Libxl se ve bien en que puedes editar si lo necesitas. –

19

creo que las bibliotecas de PHP utilizan los formatos de Office OpenXML ... La mejor biblioteca para leer/escribir archivos de Excel binarios (sin ejecutar Excel sí mismo y decir que es a través de COM) que he utilizado es Apache POI - http://poi.apache.org/, pero esto es Java Podría intentar usar GCJ para que funcione en el iPhone, pero quién sabe qué haría Apple con él. Podrías manualmente portar todo a Obj-C/C++ Supongo ...

Hay algunas bibliotecas C/C++ que hacen un subconjunto limitado, pero probablemente no son increíblemente confiables o fáciles de usar.

http://xlslib.sourceforge.net/index.php - LGPL

http://www.libxl.com/ - Comercial, $ 199, ¿quién sabe si le darían origen para que al compilar en su aplicación.

http://www.codeproject.com/KB/office/ExcelFormat.aspx - fuente C++, licencia increíblemente poco clara, como todo en el proyecto de código. Quién sabe.

Otra opción es intentar extraer el código de un competidor de lectura de código abierto de Excel. Open Office - http://www.openoffice.org/ - es probable que sea una pesadilla completa, Gnumeric es probablemente una mejor opción. El código de Excel está aquí - http://git.gnome.org/browse/gnumeric/tree/plugins/excel - es probable que necesite un montón de problemas para que funcione fuera de Gnumeric. KSpread tiene un código similar aquí: http://websvn.kde.org/trunk/koffice/filters/kspread/excel/import/, pero creo que Gnumeric tiene una mejor reputación de precisión en la importación de Excel.

+0

nota: xlsLib es una biblioteca para generar archivos de Excel, pero por lo demás es una gran respuesta; mucho más de lo que logré encontrar. –

+0

Excelente respuesta (más +1, pero me quedé sin votaciones hoy; volveré para hacerlo más tarde). El CodeProject uno mencionado anteriormente puede ser el camino a seguir: lo que se hace es que exista en el formato binario de Excel: http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx#EXB, y tendría que limpiar y mejorar ese código. Eso es si está tratando con formatos de Excel 97-2003: con 2007/2010, es mucho más fácil ya que todo es solo XML. –

+0

la respuesta no es lo que estaba buscando ni remotamente, mientras que no tengo ROI de las aplicaciones que hago, por lo que gastar buena cantidad de tiempo solo en la importación de Excel no es el camino a seguir. A pesar de que estoy otorgando la recompensa, ya que es realmente una gran respuesta, vitorea –

2

@David H
Creo que su respuesta es la mejor para resolver el problema. Encontrará que su DHlibxls es mejor para analizar el archivo xls en el programa ios. Aquí está en el blog summary

1

Recientemente me metí en un proyecto en el que el cliente quería importar información de un archivo de Excel a una aplicación. Conozco un lote de personas que dicen, simplemente transfórmalo en un CSV y analízalo de esa manera, pero realmente no quería que el cliente pasara un paso más e introdujese un formato de archivo diferente, tan simple como eso puede ser .

Intenté usar DHlibxls, pero sentí que era un poco demasiado complicado, así que creé QZXLSReader. Es una solución de arrastrar y soltar, así que es mucho más fácil de usar. No creo que sea una función completa, pero funcionó para mí.

Básicamente es una biblioteca que puede abrir archivos XLS y analizarlos en clases Obj-C.Una vez que tenga las clases, es muy fácil enviarlas a Core Data o a un diccionario o lo que sea.

Espero que ayude!

+0

@oliveresF He añadido QZXLSReader. en nuestro proyecto y NSString * xlsFileURL = [[NSBundle mainBundle] pathForResource: @ "GTM_map_list" ofType: @ "xls"]; QZWorkbook * excelReader = [[QZWorkbook alloc] initWithContentsOfXLS: [NSURL URLWithString: xlsFileURL]]; pero obteniendo excelReader.workSheets nil –