Tengo un código «for loop»

for i=1:4
la declaración…
y=sim(net, I);
final

ahora necesito para exportar el valor de y a la hoja de excel. para que me sirve..

xlswrite(‘output_data.xls’, y, ‘output_data’, ‘A1’)

pero mi problema es que el ID de excel decir «A1» deben cambiar de acuerdo a cada iteración… en mi caso, para la iteración 1-> A1, iteración-> A2 y así sucesivamente..

alguien por favor me ayude a salir ..
gracias de antemano. para cualquier ayuda.. o sugerencia..

3 Comentarios

  1. 4

    Puede almacenar sim salidas en un vector (y(ii)) y guardar en la hoja con una sola escritura. Esto también es más eficiente, ya que realizar una sola masiva de escribir en lugar de muchos pequeños escribe.

    Especificar la primera celda y y será escrito a partir de ahí.

    last = someNumber;
    for i=1:last statement... y(i)=sim(net, I); end
    
    xlswrite('output_data.xls', y', 'output_data', 'A1');

    Si usted prefiere especificar el rango de escribir ['A1:A',num2str(last)] en lugar de A1.

    Si realmente quieres escribir dentro del bucle tratar:

    for ii=1:last
        ...
        y=sim(net, I);
        xlswrite('output_data.xls', y, 'output_data', sprintf('A%d',ii));
    end
    • Gracias por tu respuesta.. he usado >>xlswrite(‘output_data.xls’, y, ‘output_data’, [‘A’, num2str(recuento)])
  2. 2

    También se puede hacer por sí mismo lo que xlswrite hace internamente, que se interactúa mediante la utilización de COM. Prefiero hacer esto cuando tengo utilizadas frecuentemente plantilla de excel o archivo de datos, ya que permite más control (aunque con más líneas de código).

    Excel    = actxserver('Excel.Application');
    Workbook = Excel.Workbooks.Open('myExcelFile.xlsx');
    MySheet  = Excel.ActiveWorkBook.Sheets.Item(1);
    
    set( get(MySheet,'Range','A1:A10'), 'Value', yourValues);
    ...
    invoke(Workbook, 'Save');
    invoke(Excel, 'Quit');
    delete(Excel);

    Esto le permitirá guardar los datos nuevos a los nuevos rangos sin re-abrir excel cada vez.

    Aún mejor sería definir un oncleanup función (como lo hace xlswrite) para evitar la pérdida de bloqueos de archivo (especialmente cuando usted está haciendo las cosas como salir del modo de depuración):

    ...
    myWorkbook = Excel.Workbooks.Open(filename,0,true);
    cleanUp = onCleanup(@()xlsCleanup(Excel, filename));
    
    function xlsCleanup(Excel,filepath)
        try
            Excel.DisplayAlerts = 0; %//Turn off dialog boxes
            [~,n,e] = fileparts(filepath); %//Excel API expects just the filename
            fileName = [n,e];
            Excel.Workbooks.Item(fileName).Close(false);
        end
        Excel.Quit;
     end
  3. 0

    Usted puede poner xlswrite después del bucle for.Sólo quiero hacer es guardar resultado en una matriz.Esta función se puede escribir una matriz.
    también,puede usar [] para combinar cadena para cambiar el rango.

    >> for i=1:4
    Range=['A' num2str(i)]
    end
    Range =
    A1
    Range =
    A2
    Range =
    A3
    Range =
    A4

    Pero,esta es una mala manera.Usted debe abrir y escribir archivo de Excel cada vez.

    • Gracias por tu ayuda.. lo que realmente me ayudan mucho…

Dejar respuesta

Please enter your comment!
Please enter your name here