繁体   English   中英

将数据从单元格导出到Excel文件

[英]Exporting data from cell to Excel file

假设我有一个名为data的单元格,如下所示:

data{1} = vector1; 
data{2} = vector2; 
... 
data{n} = vectorn; 

在所有的向量(与数值) data具有相同的1×N个尺寸。

现在,我想将此数据文件导出到.xlsx文档中,其中每一行都是矢量,并且我想为每一列加上标签。 结果应该是这样的:

  label1         label2        ...       labelN

vector1(1,1)   vector1(1,2)    ...     vector1(1,N)

  ...              ...         ...         ...

vectorn(1,1)   vectorn(1,2)    ...     vectorn(1,N)

我尝试使用以下方法执行此操作:

n=10;
N=5;
for i=1:n
  data{i}=rand(1,N);
end
filename='test.xlsx';
xlswrite(filename,data)

但是我的.xlsx文件仅将数据中的所有data放在一行中。 而且我不知道如何做标签。

请帮我。

这可以使用vertcatnum2cellsprintfstrsplitxlswrite ,如下所示:

modified_data = num2cell(vertcat(data{:}));     % Converting 1xn cell into nxN cell

% Generating Column Headers as specified in the question
col_header = strsplit(sprintf('label%d ' , 1:N));
col_header = col_header(1:end-1);
% If N is not much high number (e.g; if N=5), you can input Column Headers as: 
% col_header = {'label1','label2','label3','label4','label5'};

filename='test.xlsx';                           % Name of the excel file to be written
xlswrite(filename,[col_header; modified_data]); % Writing the excel file

这是因为您在一个单元格( data{i} )中一起调用rand(1,N) )。 对于它自己的单元格中的每个值,您必须创建一个nxN的单元格矩阵,如果您要转换整个矩阵,则最容易做到:

n=10;
N=5;
  data=rand(n,N);
  celldata=num2cell(data);
filename='test.xlsx';
xlswrite(filename,celldata);

否则,您必须进行两个循环,但这并不是那么好的性能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM