【问题标题】:summing up excel files in matlab在matlab中总结excel文件
【发布时间】:2010-03-19 11:05:35
【问题描述】:

有没有简单的好方法可以在matlab中总结各种excel文件? 我真正想要的是类似于

dos 命令

输入文件*.xls> sumfile.xls
我有 10-100 个具有相似文件名格式的 excel 文件 XXXXX_2010_03_03.xls、XXXXX_2010_03_03.xls等等.....
是否有命令一个接一个地复制文件。所有文件的长度都不同,所以我无法知道每个文件后行的位置。我想让它们复制到同一张 Excel 表中。

谢谢

【问题讨论】:

  • 而不是求和,我相信您正在寻找的词是 concatinating。乍一看,我以为您实际上想对电子表格的值求和

标签: excel matlab


【解决方案1】:

获取文件名

names=dir('XXXXX-*.xls');
names={names.name};
output='out.xls';

第一个文件。这将在您每次运行此程序时覆盖输出 - 这是否是您想要的行为取决于您。

copyfile(names{1},output);

循环浏览文件

for i=2:length(names)
  num_in = xlsread(names{i}); % read the data
  num_out = xlsread(output);      

  range=['A' num2str(size(num_out,1)+1)]; % next free line 
  xlswrite(output, num_in, 1, range); %always write to the 1st sheet
end

如果 (1) 您只有数字数据并且 (2) 您想从上到下连接(如您所说的“总和”)文件,这应该可以工作。

如果 (1) 有误,请阅读xlsread 的帮助——查找txtraw 的输出。

【讨论】:

  • @AB:我试过了,它会创建一个新的工作表 A 并复制(覆盖)所以我只有最后一个文件
  • @AP:终于到了 MATLAB,检查、修复、编辑——它对我有用。新表的问题有点奇怪。我已经通过在最后一行添加一个 ',1' 来解决它,但是如果我正确理解 XLSWRITE 的帮助,它应该可以在没有它的情况下工作。不过没关系 - 现在真的应该没问题,就像答案中显示的那样。
  • @AB 哇,非常感谢哥们,我仍然不明白看代码和阅读 matlab 的帮助,但它适用于 5 个虚拟文件,我希望它适用于我巨大的 100 个文件明天上班。
  • @AB:XLSWRITE 的 'sheet' 和 'range' 参数很棘手。如果您只输入三个输入,XLSWRITE 会将 '1' 或 'A1' 解释为 sheet 名称,但 'A2:D2' 将解释为 range。冒号的存在会有所不同。这就是为什么通常最好指定 4 个输入(工作表和范围)以避免混淆。 (这在 XLSWRITE 文档蓝框内的注释中有说明:mathworks.com/access/helpdesk/help/techdoc/ref/xlswrite.html
  • @gnovice:嗯,我猜 MathWorks 收到了很多关于没有记录的投诉 - 在我的 R2007a 中没有这样的蓝框。
【解决方案2】:

使用xlswrite(filename, M, range) 一个接一个地写入您的文件。使用xlsread 将Excel 文件读入M

xlswrite(filename, M, range) 写入 矩阵 M 到一个矩形区域 由第一个范围指定 文件文件名的工作表。

【讨论】:

  • 您可以使用uigetfile让用户选择他们想要连接在一起的文件,然后使用xlsread和xlswrite将它们读入matlab,然后再写出来
猜你喜欢
  • 2012-11-09
  • 2014-07-09
  • 1970-01-01
  • 2018-09-03
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多