将数据写入excel文件,MATLAB

时间:2012-03-22 23:05:14

标签: excel file matlab

我在Windows 7机器上使用 MatlabR2011a 。 我有一个635文本文件的文件夹。每个文件包含多行和2列。我试图循环文件夹并读取每个文件并将这些值写入excel。到目前为止,这就是我所拥有的:

close all; clc;
  dirname = uigetdir;
  Files = dir(fullfile(dirname,'*.txt'))

  for k = 1:635
      j =1
      filename = fullfile(dirname,Files(k).name);
      fid = fopen(filename);
      x = fgetl(fid)
      while ischar(x)
          x = fgetl(fid)
          a2 = strtrim(x);
          a3 = textscan(a2,'%s');
          a4 = a3{1}{1};
          a5= a3{1}{2};
          pos3 = strcat('A',num2str(j));
          xlswrite('sample_output',{a4,a5},'Sheet1',pos3)
          j = j+1;
      end
         fclose(fid);
  end

在读完第一个文件后,它一直给我以下错误。

  Error using ==> strtrim Input should be a string or a cell array of strings.

示例输入文件如下所示:

  15076 4636259
  15707 4636299
  15714 1781552
  15721 4204950
  15730 2174919
  16209 4636510
  16413 4758572
  16470 4445808
  17519 311397
  17667 2116489
  17739 1729694
  18024 3210756
  18627 3714194
  18695 4192858
  19141 632766
  19318 1923574
  19438 1255216
  19493 4635020
  19771 4770250

我该如何解决这个问题?非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

在while循环中,剪切线

x=fgetl(fid)

...并在j = j + 1之后将其粘贴到结束语句之前。

发生错误是因为你在while语句之前得到一行,然后你使用while语句来测试字符串的有效性(到目前为止都很好),但是在你执行字符串操作之前立即获得后续行。在while块的开头调用fgetl可能会返回一个EOF,导致后续的字符串操作函数失败。

另外......如果你设置你的for循环

,代码会更强大
for k=1:numel(Files)

答案 1 :(得分:1)

由于您的所有数据都是数字,因此应该可以使用。试一试。

dirname = uigetdir;
Files = dir(fullfile(dirname,'*.txt'))
j =0;
for k = 1:numel(Files)
  filename = fullfile(dirname,Files(k).name);
  x = dlmread(filename,'\t'); %# I assume tab-delimiter
  j = j + size(x, 1);
  xlswrite( 'sample_output', x, 'Sheet1',sprintf('A%d',j) )
end