How to save vector columnwise in Excel file
60 次查看(过去 30 天)
显示 更早的评论
Suppose I am generating a column vector randomly 30 times and each time I wish to save it in the Excel column. Can anybody tell me how to do it.
for i=1:30
vec = randn(5,1);
%%Save vec in excel file
end
2 个评论
Jan
2017-6-22
What is "the Excel column"? Do you want to save all vectors in the same column, or each vector in its own column?
回答(2 个)
Jan
2017-6-22
编辑:Jan
2017-6-22
ExcelFile = fullfile(tempdir, 'YourFile.xlsx');
for i = 1:30
vec = randn(5,1);
colName = xlsColNum2Str(i);
xlswrite(ExcelFile, vec, sprinft('%s1:%s%d', colName, colName, numel(vec)));
end
It might be easier or faster, to create a matrix and save it as a block:
mat = randn(5, 30);
Range = sprinft('%s1:%s%d', xlsColNum2Str(1), xlsColNum2Str(5), numel(vec));
xlswrite(ExcelFile, mat, Range);
xlswrite can guess the range, if the sheet was specified:
mat = randn(5, 30);
xlswrite(ExcelFile, mat, 1, 'B2');
0 个评论
Nut
2017-6-22
Hi,
this code could be valid for you:
for i=1:30
vec = randn(5,1);
% Syntax: xlswrite(filename,A,sheet,xlRange)
xlswrite('Workbook.xlsx',vec,1,[letters num2str(1)])
end
But you need "letters": it is a string corresponding to the column where you want to write the variable "vec".
If to save in Excel for each iteration is not a constraint, you can avoid this. First, you should generate the whole matrix to be exported in Excel, and finally write it into the workbook. I think this way is also more efficient.
mtx = zeros(5,30);
for i=1:30
mtx(:,i) = randn(5,1);
% Syntax: xlswrite(filename,A)
xlswrite('Workbook.xlsx',mtx)
end
2 个评论
Nut
2017-6-23
Ok. So, the issue is how to generate the string corresponding to the name of the Excel column. I use a my own code to do this, but you can refer to the answer by Jan Simon: it calls a ready-to-use function from Matlab Exchange, so it should be a better way.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!