Rts95 2021-07-14 19:01 采纳率: 66.7%
浏览 321
已采纳

matlab将循环读取若干excel的不同sheet数据并计算(计算代码有了),得到结果后保存

我有很多excel,每个excel有若干个sheet,不同excel的sheet名不一样个数也不一样,我需要把每个sheet的mesh那一列数据提取出来,进行运算,最后把数据进行保存。运算的代码已经有了。
我在python上能做出来,但是计算的速度比matlab慢很多。还望伸出援手,帮我解决下难题

img

img
做法类似下图,只不过想要循环自动读取以后计算保存

img
那个plpva是已经有的代码,用来计算的

  • 写回答

2条回答 默认 最新

  • soar3033 2021-07-14 23:10
    关注
    f= dir('*.xlsx');
    f={f.name};
    for i =1:length(f)
    [Type Sheet Format]=xlsfinfo(f{i});
    for j= 1:length(Sheet)
    t=readtable(f{i},'Sheet',Sheet{j});
    data=t(:,'mesh').mesh;
    plpva(data);
    end
    end
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • MatlabFans_Mfun 2021-07-14 20:29
    关注

    试着写了一下代码,你试试,将m文件和数据文件放在同一目录下运行:

    kk = 1;
    
    File = dir('*.xlsx');  % 显示文件夹下所有符合后缀名为.xlsx文件的完整信息
    FileNames = {File.name}';
    
    for ii = 1:length(FileNames)     %% 文件循环
        filename = FileNames{ii};
     
        sheetname = sheetnames( filename );
        for mm = 1:length(sheetname)  %% sheet循环
            C = readcell(filename,'Sheet',sheetname{mm} );
            [m,n] = size(C);
            for jj = 1:n              %% 寻找mesh列
                if strcmp( C{1,jj} , 'mesh' )
                    Data{kk} = cell2mat(C(2:end,jj));   %所有数据存储在Data变量中
                    kk = kk+1;
                    disp( ['正在读取第 ' num2str(kk) '条数据'] )
                    break;
                end
            end
        end
        
            
    end
    
    save DataMat Data
    disp( ['读取完毕,共读取 ' num2str(kk) '条数据'] )
    
    

    自己生成了21组xlsx数据,每组xlsx中3项sheet数据,共有63组数据,读取结果如下:

    正在读取第 2条数据
    正在读取第 3条数据
    正在读取第 4条数据
    正在读取第 5条数据
    正在读取第 6条数据
    正在读取第 7条数据
    正在读取第 8条数据
    正在读取第 9条数据
    正在读取第 10条数据
    正在读取第 11条数据
    正在读取第 12条数据
    正在读取第 13条数据
    正在读取第 14条数据
    正在读取第 15条数据
    正在读取第 16条数据
    正在读取第 17条数据
    正在读取第 18条数据
    正在读取第 19条数据
    正在读取第 20条数据
    正在读取第 21条数据
    正在读取第 22条数据
    正在读取第 23条数据
    正在读取第 24条数据
    正在读取第 25条数据
    正在读取第 26条数据
    正在读取第 27条数据
    正在读取第 28条数据
    正在读取第 29条数据
    正在读取第 30条数据
    正在读取第 31条数据
    正在读取第 32条数据
    正在读取第 33条数据
    正在读取第 34条数据
    正在读取第 35条数据
    正在读取第 36条数据
    正在读取第 37条数据
    正在读取第 38条数据
    正在读取第 39条数据
    正在读取第 40条数据
    正在读取第 41条数据
    正在读取第 42条数据
    正在读取第 43条数据
    正在读取第 44条数据
    正在读取第 45条数据
    正在读取第 46条数据
    正在读取第 47条数据
    正在读取第 48条数据
    正在读取第 49条数据
    正在读取第 50条数据
    正在读取第 51条数据
    正在读取第 52条数据
    正在读取第 53条数据
    正在读取第 54条数据
    正在读取第 55条数据
    正在读取第 56条数据
    正在读取第 57条数据
    正在读取第 58条数据
    正在读取第 59条数据
    正在读取第 60条数据
    正在读取第 61条数据
    正在读取第 62条数据
    正在读取第 63条数据
    正在读取第 64条数据
    读取完毕,共读取 64条数据
    

    63组数据存储为:1×63 cell 数组

    
    Data =
    
      1×63 cell 数组
    
      列 19
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
      列 1018
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
      列 1927
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
      列 2836
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
      列 3745
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
      列 4654
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
      列 5563
    
        {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}    {3×1 double}
    
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月15日
  • 创建了问题 7月14日

悬赏问题

  • ¥15 STM32U575 pwm和DMA输出的波形少一段
  • ¥30 android百度地图SDK海量点显示标题
  • ¥15 windows导入environment.yml运行conda env create -f environment_win.yml命令报错
  • ¥15 这段代码可以正常运行,打包后无法执行,在执行for内容之前一直不断弹窗,请修改调整
  • ¥15 C语言判断有向图是否存在环路
  • ¥15 请问4.11到4.18以及4.27和4.29公式的具体推导过程是怎样的呢
  • ¥20 将resnet50中的卷积替换微ODConv动态卷积
  • ¥15 通过文本框输入商品信息点击按钮将商品信息列举出来点击加入购物车商品信息添加到表单中
  • ¥100 这是什么压缩算法?如何解压?
  • ¥20 upload上传实验报错500,如何解决?(操作系统-windows)