Matlab如何将文本和数值数据导出到Excel CSV文件?

4
当我使用以下代码时,数值数据被正确导出,但是每个列的第一行应该是标题(标头),但是却是空白的。有什么解决方案吗?
clc 
clear

filename = 'file.csv'; 
fileID = fopen(filename,'wt');
%**************************************************************************
%Sample data (note sample data are transposed row, i.e. columns) 

sample1 = [1,2,3,4]';
sample2 = [332.3, 275.8, 233.3, 275]';
sample3 = [360, 416.7, 500, 360]';
sample4= [-0.9, -0.9, -0.9, -0.9]';
sample5 = [ 300000, 0, 0, 0]';

A ={'text1','text2', 'text3', 'text4', 'text5'}; %'

%***************************************************************************
%write string to csv

[rows, columns] = size(A);
for index = 1:rows    
    fprintf(fileID, '%s,', A{index,1:end-1});
    fprintf(fileID, '%s\n', A{index,end});
end 

fclose(fileID);

%***************************************************************************
%write numerical data to csv

d = [sample1, sample2, sample3, sample4, sample5];

csvwrite(filename, d, 1);
1个回答

5
当你写数字数据时,如果擦除了字符串,请仅运行到数字数据。只需交换操作顺序-先写数字,然后再写字符串,它将正常工作。
编辑:上述解决方法不起作用,因为写入字符串会覆盖以前写入的数字数据,更简单直观的解决方案是替换。

csvwrite(filename, d, 1);

by

dlmwrite(filename, d,'-append', 'delimiter', ',');

在原始示例中


标题行没问题,但数据不能正确写入。我只得到两行随机数据。 - Andre Marin
真的,它将覆盖数字数据,不管怎样,看起来dlmwrite是更好的选项... - Ilya Kobelevskiy
你在尝试将文本和数字数据正确地显示在CSV文件中有成功吗?我可以得到其中一个,但不能同时正确地得到两个。谢谢! - Andre Marin
是的,如果我只是在您原始示例中将csvwrite(filename,d,1)替换为dlmwrite(filename,d,'-append','delimiter',',')(而不修改其他任何内容) - 它会正确显示。 - Ilya Kobelevskiy
非常完美的运作。非常感谢。我需要查一下dlmwrite函数来理解它的作用。非常感激! - Andre Marin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接