AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

0
1

Hola a todos,

Esto es mi primer post.. a ver si tengo suerte y me podéis ayudar :-)

Como puedo exportar los datos de una tabla de core data a excel?

Muchas gracias!

preguntado 18 Abr '12, 13:34

Mark's gravatar image

Mark
1475814

¿Te refieres a que lo pueda hacer el usuario durante su uso de la aplicación o que tú, durante el desarrollo, lo puedas hacer?

(18 Abr '12, 15:03) ManueGE

Hola ManueGE, gracias por contestarme.

Me refiero que lo pueda hacer el usuario. Imagínate que tengo una tabla donde guarda nombres, apellidos y teléfonos y quiero exportar esos datos a Excel cuando el usuario lo considere conveniente mediante un botón por ejemplo.

(18 Abr '12, 16:59) Mark

Lo de exportarlo a excel no tengo ni idea como hacerlo. Más o menos sé como podría crear un archivo .csv que posteriormente y de manera manual el usuario pueda importar desde excel.

(18 Abr '12, 17:28) ManueGE

A csv entiendo que es simplemente con ",".. pero cuando el usuario lo abra en Excel lo va ver todo en la misma columna.. y lo suyo es que vea el nombre, apellido y teléfono en su columna correspondiente.. de ahí que me gustaría poder exportarlo a xls. Poder se debe poder hacer porque lo he visto en varias apps..

(18 Abr '12, 17:34) Mark

Prueba a poner al inicio del archivo que generas:

<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?>
enlace permanente

respondido 19 Abr '12, 18:43

fjginermontagud's gravatar image

fjginermontagud
12114

Gracias fjginermontagud!! ha funcionado perfectamente!!

(20 Abr '12, 13:32) Mark

Lo de exportarlo a excel no tengo ni idea como hacerlo. Más o menos sé como podría crear un archivo .csv que posteriormente y de manera manual el usuario pueda importar desde excel.

Para ello, primero conviertes el objeto de core data a un NSString donde sus propiedades esten separadas por comas. Esto puedes hacerlo añadiendo un método a la clase de ese NSManagedObject de esta forma:

- (NSString *) convertirEnCSV
{
    return [NSString stringWithFormat:"%@ ; %@ ; %@ \n", self.propiedad1, self.propiedad2, self.propiedad3];
}

Una vez que tengas esto, puedes crear el archivo de la siguiente forma. Supongamos que array es un array con los NSManagedObject que quieres exportar:

NSString * cadena = nil;

for (NSManagedObject * objeto in array)
    {
         cadena = [cadena stringByAppendingString:[objeto convertirEnCSV]];
    }

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory

NSError *error;
BOOL succeed = [cadena writeToFile:[documentsDirectory stringByAppendingPathComponent:@"myfile.csv"]
      atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (!succeed){
    // Handle error here
}

Esto copiará el archivo CSV en el directorio de documentos de tu app.

No es lo que pides, pero es la mejor aproximacion que encuentro.

Saludos!

enlace permanente

respondido 18 Abr '12, 17:39

ManueGE's gravatar image

ManueGE
3.1k284260

editó 18 Abr '12, 17:41

Muchas gracias!! muy agradecido! He lanzado la consulta tambien en el "Developer Forum" de iOS. No obstante si encuentro alguna solución como pasar esos datos a formato xls os lo pondre por si alguien lo pudiera necesitar.

(18 Abr '12, 17:51) Mark

Si, si lo encuentras añadelo que seguro que a alguien le interesa!

(18 Abr '12, 17:53) ManueGE

Hola a todos,

Esta también es mi primera aportación, así como respuesta, en NSCodeCenter (espero que no sea la última). Muchos exportadores de web (cosa que he hecho alguna vez) se basan, y excel lo interpreta perfectamente, en que puedes guardar el contenido con maquetación html y luego ese archivo guardarlo con extensión ".xls".

Es decir, creas la tabla como html <table><th>.....</table> en texto plano y encapsulas este texto en un archivo de texto con extensión ".xls"

El fichero se abrirá perfectamente en EXCEL y éste lo mostrará.

Espero que ayude. Un saludo!

enlace permanente

respondido 19 Abr '12, 15:46

fjginermontagud's gravatar image

fjginermontagud
12114

editó 19 Abr '12, 15:48

Hola fjginermontagud, gracias por tu respuesta.

Funciona correctamente.. tanto como html como xml y añadiendo la extensión ".xls". Pero cuando abro el archivo me dice:

"El archivo que intenta abrir, 'xxxxxx', tiene otro formato que el especificado por la extensión de archivo. Compruebe que el archivo no está dañado y procede de un origen de confianza antes de abrirlo. ¿Desea abrir el archivo ahora?"

Si pulso si lo abre correctamente.. Seria posible evitar este mensaje cuando abro el archivo? Esto te ha pasado a ti también?

Gracias de nuevo!

PD: Estoy utilizando word 2010 (no se si tiene que ver algo)

(19 Abr '12, 17:41) Mark

Es normal que ocurra eso, por no tener la cabecera correcta de inicio de excel, pero el funcionamiento es completamente correcto.

(19 Abr '12, 17:51) fjginermontagud

Efectivamente el funcionamiento es correcto pero me pareceria mas elegante si se pudiera evitar ese mensaje. (no se si es posible)

(19 Abr '12, 17:54) Mark
Tu respuesta:
Activar/desactivar vista previa

Sobre esta pregunta

Etiquetas de la pregunta:

×20
×14
×2
×2

Pregunta realizada el: 18 Abr '12, 13:34

Pregunta visitada: 653 veces

Última modificación: 27 Jul '12, 00:54

Seguir esta pregunta

Por Email:

Una vez que entres podrás suscribirte desde aquí para recibir actualizaciones

Por RSS:

Respuestas

Respuestas y Comentarios

Realizar Donación