matlab写入excel的实现方式
一、表格大小确定
table_sz = [10, 6];
varType = {'double', 'double', 'double', 'double', 'double', 'double'};
NewTable = table('Size', table_sz, 'VariableTypes', varType, 'VariableNames', ...
ColName, 'RowNames', title);
% table 赋值时需要右边是table或者cell 类型
for idx = 1:size(Result, 1)
result = num2cell(cell2mat(Result(idx, :))');
NewTable(idx, :) = result;
end
% 写入excel
saveName = fullfile(fileList1(3).folder, strcat(FileName, '.xlsx')); % 写入excel的路径拼接
writetable(T, saveName)
RunInfo = sprintf('{%s} Finish!', FileName);
disp(RunInfo)
- 在定义table时必须指定变量类型和table的size
- 定义的Rownames 和 VariableNames的size应该和table的size匹配
- 因此Result的保存类型应该在定义时设置。或者去修改也可
- matlab写入excel中使用table可以将table设置为标准的excel样式,再写入
二、 表格大小动态生成
varType = ["double", "double", "double", "double", "double"];
figureName = ["全频段", "δ频段", "θ频段", "α频段", "β频段"];
figTitle = ["术前", "术中", "术后1天", "术后2天", "术后3天"];
rowName = ["Fullband"; "delta_abs"; "delta_rel"; "theta_abs"; "theta_rel"; ...
"alpha_abs"; "alpha_rel"; "beta_abs"; "beta_rel"; "APFval"; "APFLoc"];
% table设置格式
dataTable = [];
for m = 1:size(Result, 2)
for n = 1:size(Result{m}, 1)
% data_table = Result{m}(n,:);
dataTable = [dataTable; Result{m}(n,:)];
end
end
[row, col] = size(dataTable);
table_sz = [row, col];
varType_table = cellstr(varType(:,1:col));
newTable = table('Size', table_sz, 'VariableTypes', varType_table, ...
'VariableNames', figTitle(:, 1:col), 'RowNames', rowName);
% 写入excel
for idx_table = 1:size(dataTable, 1)
newTable(idx_table,:) = num2cell(dataTable(idx_table, :));
end
tableName = strcat(fileList(i).name, '.xlsx');
tablePath = fullfile(fileList(i).folder, fileList(i).name, tableName);
writetable(newTable, tablePath, 'WriteRowNames', true)
- 若表格的size并不确定,可将定义表格大小的代码写入到循环中,根据生成的待存储数据生成特定大小的table;同理数据类型也可根据此来切片,但是要注意格式的转换
- 写入excel中时需要将行名称也同样写入,因此只需要将
WriteRowNames
参数设置为True