有50个txt文件,只读取每个txt文件的第10行,然后生成50行的excle表格,txt文件大概就是下面这张图,这个好像还用到sort_nat自然排序的函数,希望能得到高人的编程指点!多谢


有50个txt文件,只读取每个txt文件的第10行,然后生成50行的excle表格,txt文件大概就是下面这张图,这个好像还用到sort_nat自然排序的函数,希望能得到高人的编程指点!多谢


类似这种任务可以拆分成这么几个步骤
(1)循环获取文件夹内的txt文件名称——使用dir函数
(2)读txt文件时,把第50行提出来,存进矩阵——使用textscan函数
(3)把矩阵转成excel——使用xlswrite函数
对于提取txt可以看一下我的文章
https://blog.csdn.net/weixin_44276743/article/details/127026036?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_44276743/article/details/127269690?spm=1001.2014.3001.5502
里面提到的一些内容
%首先你要把所有txt放在一个文件夹里,这个文件夹里只有这些txt,就比较好办
%代码中你需要替换或修改的变量有:path,Format,filename
info=dir((fullfile(path, '\*.txt'))); %获取需要更改的文件们的信息,只选txt格式的,path替换成你自己放txt的文件夹地址
len=length(info); %计数一共几个文件
for i=1:len %准备循环访问这些文件
name=info(i).name; %获取第i个文件的名字 (*.txt这样的带后缀的全名)
fpathname=[path '\' name]; %获取带地址的全名
fn= fopen(fpathname);%打开这个文件
Format=repmat('%f %f %f %f %f %f' ,1,1); %这里你一行有多少个数,就写多少个%f
data = textscan(fn,Format,1,'headerlines',49);
%参数1:从fn里
%参数2:以Format的格式提取值(比如现在写的代码就是6个float格式,即六个%f
%参数3:提取1行
%参数4:跳过前n行
%参数5:跳过的n为49,即提取第50行
fclose(fn); %记得有开有关,不然下次会报错
mdata=cell2mat(data); %用textscan提取出的内容应该是一个cell格式的,转成行向量格式,这样方便储存
Alldata(i,:)=madata; %创建一个变量Alldata储存每个文件第50行的内容
end
%循环结束,你想要的数据应该已经在Alldata里了
%写入xls
xlswrite(filename,Alldata); %filename是你自己创建的想存这个数据的带路径的文件名,大概是’XXX\YY.xls'这种格式。