Matlab输出数组为excel或具有特定名称的其他文件格式

我有一个Excel文件的目录,我需要作为一个数组读取到Matlab,转置数组,然后导出回到Excel文件。 Excel文件数组是32626×153,所以我不认为我可以输出到一个Excel文件。 我正在考虑输出到*.txt*.csv文件,然后在Excel中打开它。 我写的当前代码试图写入一个*.csv文件

我需要输出文件的名称来包含部分input文件的名称。 例如,input文件名是data.xlsx ,我需要将ouyput文件的名称设置为data_transposed.csv

以下是我已经写入的代码来读取目录中的*.xlsx文件,并将数据保存到数组,然后转置数组,然后将转置数组写入*.csv文件。

 files = dir('*.xlsx'); for i = 1:length(files) filename = files(i).name; [path, name, extention] = fileparts(filename); array = xlsread(filename); transposearray = transpose(array); csvwrite('outputfile.csv' , transposearray) end 

这个代码有几个问题:

  1. 输出文件的名字是'outputfile'而不是'inputfilename_transpose'一部分,因为我需要它。 (见上面的解释)
  2. 输出文件的名字是'outputfile'而不是'inputfilename_transpose'一部分,因为我需要它。 (请参阅上面的解释)此代码仅将目录中的第一个*.xlsx文件写入输出文件。 我知道循环遍历目录中的所有*.xlsx文件,因为当我从其他所有行中取出分号并将csvwrite行注释掉时,Matlab正在摄取正确的信息。

编辑:下面的代码工作输出每个input文件的文件,以及输出文件名称中包括input文件的名称

 files = dir('*.xlsx'); for i = 1:length(files) filename = files(i).name; [path, name, extention] = fileparts(filename); array = xlsread(filename); transposearray = transpose(array); csvwrite(['outputfile',name,'.csv'] , transposearray) end 

Excel仍然不会读取输出文件,因为它具有Excel可以打开的列数的两倍。 我怎样才能把前半部分的转置列parsing为表1,将后半部分的转换后的列parsing成同一个excel工作簿的表2? 我假设这意味着我现在必须使用xlswrite()而不是csvwrite()

编辑:有太多的Excel列读取文件。 因此,我必须在一个工作表中将数据parsing成两张单独的表格。 第一个xlswrite需要第一个16,384列(所有153行),并将值从A1开始放在Excel Sheet 1中。 第二个xlswrite需要将列号16,385添加到最后一列(所有153行),并将值放在Excel表格2中从A1开始。 我该怎么做呢?

该代码写入目录中的所有文件都具有相同的名称,它们将被覆盖。 尝试这个

 files = dir('*.xlsx'); for i = 1:length(files) filename = files(i).name; [path, name, extention] = fileparts(filename); array = xlsread(filename); transposearray = transpose(array); csvwrite([path,'\',name,'_transpose','.csv'] , transposearray) end 

请注意, dir按操作系统提供的顺序读取文件,即使您在文件夹中查看文件时按名称对文件进行sorting,该文件也可能不总是按名称sorting

编辑部分

 files = dir('*.xlsx'); for i = 1:length(files) filename = files(i).name; [path, name, extention] = fileparts(filename); array = xlsread(filename); transposearray = transpose(array); n = ceil(size(transposearray,2)/2); transportarray_part1 = transposearray(:,1:n); transposearray _part2 = transposearray(:,n+1:end); xlswrite([path,'\',name,'_transpose','.csv'], transposearray_part1,1); xlswrite([path,'\',name,'_transpose','.csv'], transposearray_part2,2); end