Matlab - Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

 
Vista:
sin imagen de perfil
Val: 33
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por David (32 intervenciones) el 07/11/2015 05:56:12
Buenas Noches

Tengo un problema, como se ve en la foto hay 3 cuadros de edittext cuando se le da al boton Guardar envia los datos a la uitable que se ve abajo.

Mi pregunta es como yo podria exportar los datos de esa tabla a un archivo de html, pdf o excel.

Tengo entendido que en la pestaña de Publish se puede exportar a html y a pdf pero exporta tanto el codigo como la interfaz y yo no necesito eso; yo necesito un codigo que me permita exportar los datos de la tabla a cada uno de esos formatos.

Eh intentado usar esto para el caso de exportar a excel: xlswrite('Datos.xlsx', x , 'Data');

Pero realmente no me a funcionado (Supongo que primero habria que relacionar a la uitable con el codigo para exportar ), no se si esta es el codigo correcto y si solo cambiando el xls por html o pdf me exportaria los datos.

Agradeceria si alguien me puede dar un codigo o comando que me permita exportar los datos de la uitable a un archivo de excel o html o pdf

Gracias
Problema
Problema
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por Royeth (1818 intervenciones) el 07/11/2015 07:32:57
Excel

1
2
3
4
datos={'David' 'sanchez' 3; 'otro' 'tro' 4}; %get(handles.uitable1,'Data')
nome={'nombre' 'apellido' 'codigo'}; %get(handles.uitable1,'ColumnName')
todo=vertcat(nome,datos);
xlswrite('archi.xlsx',todo);


HTML Y PDF para este caso debes hacer un archivo aparte algo así que reciba los datos de entrada de la tabla y los muestre
1
2
3
4
datos={'David' 'sanchez' 3; 'otro' 'tro' 4}; %get(handles.uitable1,'Data')
nome={'nombre' 'apellido' 'codigo'}; %get(handles.uitable1,'ColumnName')
todo=vertcat(nome,datos);
disp(todo)


y luego la opción sería :

1
2
3
o.format = 'pdf'; %o 'html'
o.showCode = false;
publish('nombredelarchivo.m',o);

y así de esta forma puedes publicar sin que el código sea mostrado

si tienes alguna duda puedes comunicarte conmigo

un saludo
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por David (32 intervenciones) el 07/11/2015 16:02:28
Gracias por tu respuesta!!

Pero mira el problema que encontre es que cuando pones

datos={'David' 'sanchez' 3; 'otro' 'tro' 4} ;; hay no entendi bien si solo me va imprimir solo ese dato; porque al principio la tabla va a estar desocupada no siempre va a se "David sanchez 3", si? osea yo estoy guardando los datos de nombre apellido y codigo en un arreglo y luego lo mando a la tabla como podria cambiar para no poner en el codigo ningun nombre?
Se podria solo poner

datos={} Como arreglo luego el get(handles.uitable1,'Data') ???

y otra pregunta estos codigos irian en cada uno de los botones para exportar verdad?

coso

Ademas mira sale este error

error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por Jorge De Los Santos (213 intervenciones) el 07/11/2015 19:19:45
Hola David.

Te comento algunas formas de cómo abordar lo que planteas.

============================ HTML ============================

Para este caso puedes utilizar la función table2html que te adjunto en el siguiente link:

https://github.com/JorgeDeLosSantos/matlab-gui-codes/blob/master/table2html/table2html.m

A la cual debes pasarle como argumento el "handle" de tu uitable y el nombre del archivo HTML de salida, por ejemplo:

1
table2html(handles.uitable1,'Datos.html');

Donde, claro, "handles.uitable1" es el identificador de tu tabla.

También puedes pasarle opciones personalizadas al archivo HTML de salida mediante una estructura predefinida, con eso puedes cambiar el título de la tabla, el título del archivo, el borde de la tabla, los colores de fondo de la tabla, entre otras características que puedes verificar en la breve documentación que tiene la función. Y en el siguiente link, que forma parte de la misma carpeta, puedes encontrar dos demos de cómo utilizar la función:

https://github.com/JorgeDeLosSantos/matlab-gui-codes/tree/master/table2html


============================ EXCEL============================

Si quieres exportar a un archivo EXCEL puedes utilizar la función table2xls que te adjunto en el siguiente link:

https://github.com/JorgeDeLosSantos/matlab-gui-codes/blob/master/table2excel/table2xls.m

Esta función tiene la sintaxis siguiente:

1
table2xls(hTable,filename,sheet,range,bool_open)

Donde "hTable" es el handle de la uitable, "filename" es el nombre del archivo excel de salida, "sheet" el número de hoja en el cuál se insertarán los datos, "range" el rango o celda a partir del cual se insertarán los datos, y "bool_open" es un argumento opcional que permite abrir el archivo excel después de escribir los datos, por default no lo hace. Un ejemplo:

1
table2xls(handles.uitable1,'datos.xls',1,'A1');

Como puedes ver tiene casi la misma sintaxis que la función "xlswrite".


============================ PDF ============================

Y finalmente para exportar a un PDF, creo que la opción más sencilla es como te ha dicho Royeth, aunque creo que en esos casos se mostraría una "captura de pantalla" de la GUI que contiene la tabla. Pero evidentemente es más rápido y conveniente si no dispones de mucho tiempo para un desarrollo más elaborado.

En otro caso, podrías implementar igual una función que extraiga los datos y encabezados de tu tabla y posteriormente incrustar esos datos dentro de una plantilla para un productor de PDF. Por ejemplo, una forma (aunque poco conveniente), sería utilizar una ventana/figure de MATLAB como una "hoja virtual" y poner en ella "textbox" con el contenido de cada fila y/o columna que corresponda, y luego utilizar la función "print" para imprimir esa ventana como un PDF.

La otra forma sería utilizar, por ejemplo, LaTeX para crear tablas y posteriormente producir un PDF, pero necesitarías instalar el compilador y quizá configurar unas que otras cuestiones, sería más tardado, pero tendrías un archivo de salida más formal e incluso podrías crear reportes y cuestiones parecidas, pero bueno, como te digo, esto requeriría invertirle más tiempo.


Cualquier duda respecto a lo anterior puedes comentarla por este medio.



Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por David (32 intervenciones) el 10/11/2015 23:27:25
Gracias por tu respuesta, tengo una duda esa funcion que usas para exportar a HTML debe ir por aparte verdad y luego en la GUIDE principal llamo la funcion si?
Y otra cosa se supone que donde pones hTab se deberia poner en mi caso la tabla que yo este usando si osea uitable1 por ejemplo.

Lo mismo para el ejemplo que mandaste de excel osea serian dos funciones por aparte en dos nuevos scripts y ya lego llamo a estas funciones en el GUIDe principal si?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por David (32 intervenciones) el 11/11/2015 01:21:49
Es que para HTML me sale este error

Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can
crash MATLAB and/or your computer.

Error in table2html



Error while evaluating UIControl Callback
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Exportacion de una Uitable a un archivo .HTML; .PDF o .xlsx (Excel) MATLAB

Publicado por Jorge De Los Santos (213 intervenciones) el 13/11/2015 04:38:00
Hola David.

Si, claro, debes poner la función "table2html" en un archivo dentro de la misma carpeta que tienes tus otros códigos, y luego llamarla desde el "callback" de tu pushbutton utilizando la referencia a tu tabla como argumento de entrada, por ejemplo:

1
2
function pushbutton1_Callback(hObject, eventdata, handles)
table2html(handles.uitable1,'Ejemplo.html');


He probado la función una cantidad considerable de veces y no me ha dado un error parecido, ahora, si el error sigue persistiendo puedes comentarlo, ya que sería interesante ver en qué parte se está colgando.



Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar