2010-08-27 17 views
19

Estoy escribiendo una aplicación Cocoa y estoy intentando exportar al formato XML de Excel (ISO/IEC 29500-1) que es básicamente un archivo zip con un montón de XML archivos en él nombrados con una extensión .xlsx.Crear archivos Excel (.xlsx) en Cocoa

He intentado generar AppleScript y usando NSAppleScript para crear el archivo de Excel, que funciona, pero es lento y el usuario tiene que tener Excel instalado en su máquina.

Pude crear un archivo .xlsx Excel simple escribiendo el XML en archivos en Objective C y comprimiéndolos y cambiando el nombre del archivo zip al .xlsx. Excel podría abrir el archivo, pero Numbers lanzó un error al intentar abrir el archivo que creé. Parece que Excel debe haber implementado todas (o la mayoría de) la especificación ISO/IEC, mientras que Numbers solo puede abrir la versión con sabor de Excel.

Cómo crear archivos de Excel que funcionen usando Cocoa y Objective-c?

+1

se puede consultar la [documentación de MSDN del formato de archivo XLSX] (http://msdn.microsoft.com/en-us/library/dd922181 (v = office.12) .aspx). Que eso sea de ayuda para usted ... – froeschli

Respuesta

2

Wikipedia offers some links to libraries, lo que probablemente le dará un buen comienzo.

Si el formato Office Open XML no es un requisito, y no necesita exportar archivos demasiado complejos, también sugiero que guarde los archivos como hojas de estilo formateadas HTML que Excel también puede leer. Una forma sencilla de aprender a formatear el HTML que desea como hoja de cálculo es crear el archivo en Excel y guardarlo como HTML.

+0

Parece que puede ajustar el componente PHPExcel de PHP dentro de Objective-C. – adib

3

He trabajado con el OpenOffice API y funciona muy bien. Sugeriría que trabajes con eso para crear tus archivos de Excel. Si no tiene tiempo/paciencia para hacerlo, una solución alternativa podría ser tener 2 enlaces para exportar archivos, la versión XLSX hackear los Excels del mundo y luego un archivo CSV exportado por separado para la aplicación Numbers.

+2

¿podría publicar más sobre él o algún código de muestra mínimo? –

11

¿Qué tal encapsular la tabla HTML en el archivo de Excel? He comprobado que esto funciona y puedo abrirlo con Excel.

NSURL * documentsDirectory = [NSFileManager.defaultManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].lastObject; 
NSURL *file = [documentsDirectory URLByAppendingPathComponent:@"contacts.xls"]; 
NSString* string = @"<table><tr><td>FOO</td><td>BAR</td></tr></table>"; 
[string writeToFile:file.path atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
+1

Esto NO crea un archivo xls (Excel). Esto crea un archivo de fragmento HTML. – rmaddy

+0

Este es un html, no xls –

Cuestiones relacionadas