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

时间:2016-11-28 05:40:56

标签: excel matlab cell

假设我有一个名为data的单元格:

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

data中的所有向量(具有数值)具有相同的1xN大小。

现在,我想将此数据文件导出到.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中的所有数据。我不知道如何做标签。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

可以使用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

答案 1 :(得分:0)

因为你在一个单元格(rand(1,N))中一起调用data{i}。对于其自己单元格中的每个值,您必须创建一个nxN单元格矩阵,如果您从整个matirx转换,这是最简单的方法:

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

否则你必须制作两个循环,但那并不是那么好的表现