读excel文件

1,用函数:

[num,txt]=xlsread(filename)

num是数值部分,txt是文本部分。

2,用向导:

将excel文件拷贝到Current Directory中打开,就会出现Import Wizard:

导入向导.jpg

data是数值部分,textdata是文本部分。

--

由于matlab中有str2num函数,将字符转数值是很方便的,因此也许希望将excel中全部内容都当作文本读进来,那么可以修改原excel文件,其中的数值列都转成文本,方法如下:(来自http://www.mzwu.com/article.asp?id=1150 )

1.选中想转为文本的列
2.选择"数据"菜单下的"分列",打开文本分列向导窗口
3.在步骤一中选择"分隔符号",点击进入下一步
4.在步骤二中不选择任何分隔号,点击进入下一步
5.在步骤三中将列数据格式设置为"文本",点击完成

这样,再读到matlab后此列就被当成文本了。

--

当然,由于textdata每个格用一个元胞,所以也完全可以将data和textdata读进来后通过编程将data填充到textdata对应的元胞里去,从而得到一个完整的表格。下面函数可以实现这个功能:

function sheet=joint(data,textdata,beginline)
%beginline指明数据从哪一行开始填充,即等于表头所占行数+1
%从左向右对空列依次填充,因此须保证原表格中没有空列才能正确填充
sheet=textdata;
if size(data,2)==0
    return;
end
emptycol=zeros(1,size(sheet,2));%记录sheet各列是否为空
%找sheet的所有空列
for j=1:size(sheet,2)
    %看sheet的第j列是否为空
    empty=true;
    for i=beginline:size(sheet,1)
        if ~isempty(sheet{i,j})
            empty=false;
        end
    end%得到empty
    if empty==true
        emptycol(j)=1;
    end
end%得到emptycol
index=find(emptycol==1);
%用data填充sheet中由index所指向的各列
pdatacol=1;
for j=index
    if pdatacol>size(data,2)
        error('数值不足以填充所有空列!(可能是由于原表中存在空列)');
    end
    %填充sheet的第j列
    for i=beginline:size(sheet,1)   
        sheet{i,j}=data(i-beginline+1,pdatacol);
    end
    pdatacol=pdatacol+1;
end
end

注:

将数值与文本合在一起看似比较完美,但实际上往往并不好,尤其是需要对数值作批量处理的时候:如果放在矩阵里,可以进行块操作,但如果放在元胞里,就必须用循环遍历。由此看来,matlab将数值与文本分开导入不无道理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值