Importar datos de Excel a MatLab

Ya que sabemos exportar datos de MatLab a Excel, ahora veremos como hacer lo contrario importar datos de Excel a Matlab.

[singlepic id=17 w=320 h=240 float=center]

 Para esto contamos con un comando llamado xlsread y su sintaxis es:

[num,text]=xlsread(NombreArchivo,Hoja,Rango)

donde:

num: Es una matriz de tipo numerico en el cual seran guardados todos los datos numericos encontrados dentro de la hoja y rango especificado.

text: Matriz de tipo celda donde se guardaran todos las cadenas que sean encontradas dentro de la hoja y rango especificado. Cada cadena se guarda en una celda dentro de la matriz.

NombreArchivo: El nombre o ruta del archivo a leer. Este parametro debe ser una cadena.

Hoja: Hoja a leer, por default Hoja1, Este parametro debe ser una cadena, ademas de ser case sensitive (distingue mayusculas y minusculas).

Rango: Es el rango de celdas donde leera la informacion. Este parametro debe ser una cadena ej. ‘A2:B5’

Tambien existe una forma interactiva de xlsread donde se pueden seleccionar la hoja y las celdas directamente de excel, para usarlo se llama de la siguiente manera:

[num,text]=xlsread(NombreArchivo,-1)

Cuando se ejecuta ese comando se abre Excel con el archivo solicitado y se abre un popup de MatLab donde te dice que selecciones las celdas que requieres y al final dar clic al boton ok.

En el ejemplo que veremos hoy usaremos el ejemplo de exportar datos y al final leeremos los datos escritos anteriormente de forma interactiva seleccionando las celdas directamente de excel.

[code language=’text’]
clear
clc

%nombre donde se guardara el archivo
file=input(‘Cual es el nombre del archivo: ‘,’s’);
hoja=’Hoja1′;

%nombres para las columnas
names=[{‘Centigrados’},{‘Farenheit’},{‘Kelvin’}];

%se escribe names en el archivo
[estado]=xlswrite(file,names,hoja,’A1′);
if estado==0
disp(‘La creacion del archivo ha fallado.’);
end

%valores y conversiones
%centigrados, farenheit,kelvin
c=[0:100]’;
f=(1.8).*c+32;
k=c+273;

%se crea matriz con los datos a guardar
datos=[c,f,k];

%se escriben los datos en el archivo
[estado]=xlswrite(file,datos,hoja,’A2′);
if estado==0
disp(‘La creacion del archivo ha fallado.’);
end

%ahora leeremos los datos escritos previamente

[num,text]=xlsread(file,-1)
[/code]

Adrian MB

Me gusta la electrónica, programación y todo lo relacionado. Ing. en Mecatronica de la UPIITA del IPN y estudiante de Diseño Industrial en la UAM. @adrianmtzb http://adrianmb.mx

También te podría gustar...

  • anonimo

    Buenas tardes,

    ¿es posible guardar en un vector los nombres contenidos en las diferentes ojas excel y poder referirte mediante él?

    Ejemplo:

    En mi excel la hoja 1 se llama ‘abc’ y la hoja 2 ‘fgh’

    Matlab:

    v =[{‘abc’} {‘fgh’}];

    a= xlsread (excel, v(2))

  • Roberto

    hola tngo una pregunta como hago para guardar datos desde matlab en cada fila de excel sin necesidad de especificar la fila sino q se genere automaticamente o internamente muchas gracias

  • Javier Jimenez

    Gracias por la ayuda, quisiera que me ayudaras con una duda, de una palabra ingresada en matlab por medio de una GUI, ¿cómo puedo buscar esta palabra en un archivo de excel?; Como si buscaras el nombre de una cancion y te salgan las coincidencias, de antemano muchas gracias.

  • Giovanni

    Hola, disculpa, cuando copio el script que nos compartes me aparece el error:
    “??? Error using ==> xlswrite
    Too many output arguments.”
    No encuentro el error, me podrías orientar un poco. Gracias.

    • El codigo en este post funciona correctamente, si creaste tu propio codigo y te da ese error, es por que le estas exigiendo demasiados datos de salida a la funcion xlswrite.

      • Giovanni

        Sólo lo copie y pegue en el workspace, y me marco el error. De hecho llegué a este blog después de intentar otros ejemplos. Investigaré un poco mas. te agardezco tu atención. Saludos.

  • Yeisson

    saludos compañero, tengo una inquietud. Lo que deseo es a través de un dato que le suministro (numérico) seleccione un valor cercano, y tome una cadena de caracteres de la columna siguiente.
    agradecería infinitamente si me pudiera brindar alguna ayuda.

  • Vic

    hola, excelente web tengo una prgunta espero puedas ayudarme yo obtengo datos desde un osciloscopio y hay unos valores que me los guarda en un char. Necesito enviar ésos valores a un archivo de excel, el problema es que los necesito en una sola celda y mee escribe un caracter por celda, hay alguna manera de hacerlo? mis datos char son de 1x72 números y letras, espero puedas ayudarme de antemano gracias

  • Isaí

    Una pregunta bien grande por ejemplo si en excel tecleo en A(1,1) un valor 10101010101 representado a un numero binario y cuando cargo el archivo de excel en matlab me da una matriz double ¿como decompongo ese vector ya que no lo puedo restringir a que este me tome los datos como caracter?

  • Daniel Romano

    que tal, vi la manera en que cargaste un archivo de excel en matlab, ahora mi duda es como cargar un archivo txt y los elementos existentes en ese archivo los tome como matriz.

    • para cargar un archivo txt debes utilizar la función fopen() , cargas el archivo y luego lees los datos contenidos con fread(), estos datos se guardan en una cadena de tipo char, ahora lo que debes haces es separarlos como te convenga puedes usar la función regexp(variable,’delimitador’,’split’) que cortara la cadena variable en las partes donde encuentre el delimitador que puede ser un espacio, salto de linea, una letra, etc, estos datos se guardan como variable de tipo celda, por ultimo solo debes convertir las celdas a una matriz y listo.

      Te dejo un pequeño programa que crea un txt y luego lo lee, solo falta implementar la separación de elementos, espero te sirva.

      clc
      clear

      grados=[0:360]’;
      rad=deg2rad(grados);
      seno=sin(rad);
      escribir=[grados rad seno]’;

      file=input(‘Escoge un nombre para el archivo: ‘,’s’);
      disp(‘Teclea 1 para un archivo .txt’);
      disp(‘Teclea 2 para un archivo .doc’);
      f=input(”,’s’);

      switch f
      case ‘1’
      formato=’.txt’;
      case ‘2’
      formato=’.doc’;
      otherwise
      disp(‘Esa opcion no es valida, intenta de nuevo…’);
      break
      end

      id=fopen([file formato],’wt’);

      fprintf(id,’Grados\tRadianes\tSeno\n\n’);
      fprintf(id,’%d\t\t%f\t%f\n’,escribir);
      fclose(id);

      id=fopen([file formato],’rt’);
      %datos=fread(id,’*char’)’
      datos=fscanf(id,’%c’);
      fclose(id);

  • Victor

    Amigo te recomiendo que pruebes incluyendo matlab dentro de excel tambien es poderoso. Si requieres trabajar con funciones o algoritmos de matlab desde el ambito de excel y sus macros (Visual).

    Spreadsheet Link EX

    • Gracias por la recomendación Victor, investigare un poco acerca del tema.

      Saludos.

  • Umorwen

    Very cute :-)))),

  • Welanna

    Great site. Keep doing.,

  • dilandinga

    Brnrqf I bookmarked this link. Thank you for good job!

  • De nada para eso estamos ;D. Y gracias a ti por comentar. Pronto posteare como escribir y leer en archivos de texto.

    • Jose Luis Cruz

      que buen sitio¡¡¡ felicidades¡¡¡ no sabes importar datos de arduino a matlab??

      • jaja que onda Cruz, claro que si se, te explico mañana en clase xD