我有一个代码 “for循环”如何将数据从Matlab导出为Excel循环?
对于i = 1:4 语句... Y = SIM(净,I); 端
现在我需要y的值导出到Excel工作表。对于我用..
xlswrite( 'output_data.xls',Y 'output_data', 'A1')
但我的问题在于:Excel即的ID “A1”应该根据每次迭代...在我的情况下,为迭代1-> A1,迭代 - > A2等。
任何人请帮助我.. 在此先感谢。对于任何帮助..或建议..
我有一个代码 “for循环”如何将数据从Matlab导出为Excel循环?
对于i = 1:4 语句... Y = SIM(净,I); 端
现在我需要y的值导出到Excel工作表。对于我用..
xlswrite( 'output_data.xls',Y 'output_data', 'A1')
但我的问题在于:Excel即的ID “A1”应该根据每次迭代...在我的情况下,为迭代1-> A1,迭代 - > A2等。
任何人请帮助我.. 在此先感谢。对于任何帮助..或建议..
你可以把xlswrite放在for循环之后。你只需要做的就是将结果保存在一个矩阵中。这个函数可以写一个矩阵。 也可以用[]来组合字符串来改变范围。
>> for i=1:4
Range=['A' num2str(i)]
end
Range =
A1
Range =
A2
Range =
A3
Range =
A4
但是,这是一个坏的方法。您应该每次打开和写入Excel文件。
您可以将sim
输出存储在一个向量中(y(ii)
)并使用单次写入保存在工作表中。由于您执行的是单个批量写入而非许多小写操作,因此这也更加高效。
指定第一个单元格,并从那里开始编写y
。
last = someNumber;
for i=1:last statement... y(i)=sim(net, I); end
xlswrite('output_data.xls', y', 'output_data', 'A1');
如果你喜欢指定范围写['A1:A',num2str(last)]
而不是A1
。
如果你真的想在循环中尝试写:
for ii=1:last
...
y=sim(net, I);
xlswrite('output_data.xls', y, 'output_data', sprintf('A%d',ii));
end
谢谢你的回答..我用 >> xlswrite('output_data.xls',y,'output_data',['A'num2str(count)]) – 2012-01-02 07:39:37
你也可以做自己是什么xlswrite内部呢,这是交互使用COM。当我有一个经常使用的Excel模板或数据文件时,我更喜欢这样做,因为它允许更多的控制(虽然有更多的代码行)。
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);
这将允许您保存新的数据到新的范围,而无需每次重新打开excel。
更妙的是定义一个oncleanup功能(如不xlswrite),以防止丢失的文件锁(特别是当你做这样离开了调试模式的东西):
...
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
感谢您的帮助。 。它真的帮了我很多... – 2011-12-30 09:56:27