代码之家  ›  专栏  ›  技术社区  ›  excelhelp

有一个字符串列表,我想用它填充gui

  •  0
  • excelhelp  · 技术社区  · 9 年前

    基本上,我有一个excel文件,我在一个matlab变量中读取了一组字符串,这些字符串是数据列的标题。由于这个excel文件非常庞大,我希望可以选择在给定时间分析哪些数据,我希望能够获取这些字符串/标题,并将它们显示在gui上,旁边有一些复选框按钮,以便我可以选择要处理的数据(我需要能够选择多个数据列)。每个文件的标题数量可能会有所不同,因此列表项和复选框的数量必须根据数据文件在gui上进行更改。有什么想法如何做到这一点吗?我可以用一堆文本框和单选按钮填充我的gui,但然后我可能会得到一些空的,或是很少的,因为数据文件可以有1-50个数据列,每个列都有自己的标题

    或者,如果有人知道一个更好的方法,让我的用户选择除了一大堆复选框之外的数据列,我会很高兴听到它!这似乎是最直接的方法。

    我尝试了建议,得到了:

    gui output

    代码如下所示:

    [Data,Text] = xlsread('C:\data.csv');
    a = Text(:,1);
    b = strmatch('Channel Description',a);
    Channels = Text(b,:);
    [vals{1:numel(Channels,1)}]=deal(false);
    foo= uitable('Data',vals,'ColumnEdit', true, 'RowName',Channels);
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   smn    9 年前

    下面是一个使用 uitable ,类似于excaza的注释,但使用excel列标题作为表中的行名称:

    [~,s,~] = xlsread('excelFile.xlsx', 1, 'A1:ZZ1');
    [vals{1:numel(s),1}]   =   deal(false);
    foo = uitable('Data', vals, 'ColumnEdit', true, 'RowName', s);
    colsToLoad = foo.Data;
    

    然后,您需要读取整个表并使用 colsToLoad 或循环 列到加载 并将每一列分别读为 xlsread 不支持非连续范围。

    [Data,Text] = xlsread('excelFile.xlsx');
    dataToProcess = Data(:,[foo.Data{:}]);