【问题标题】:Import from a specific range of xlsx data in MATLAB GUI从 MATLAB GUI 中特定范围的 xlsx 数据导入
【发布时间】:2013-08-16 02:23:05
【问题描述】:

我在 MATLAB m.file 中有一个代码部分,它在 xlsx 文件中导入电力消耗数据。然后程序会提示用户输入电网费用,进行必要的计算,然后绘制一个条形图,显示每个月和每年的消耗成本。在这部分代码中获得的变量将在m.file的其他部分中使用

然后我使用 GUIDE 为这个 m.file 创建了一个多页 GUI,但是作为 MATLAB 的新用户,我在 GUI 编码方面遇到了困难。特别是导入文件,因为我希望用户能够查看和选择导入范围,而不是整个文件。我正在努力解决的另一件事是让这个 GUI 中的数据可用于所有其他 GUI 页面。

GUI 有 2 个面板。 1 个面板包含 4 个编辑文本框供用户输入电网费用,以及一个“输入”按钮。另一个面板包含一个用于显示条形图的轴,以及 13 个静态文本,这些文本将在计算完成后显示每月和每年的成本值。我希望轴和 13 个静态文本仅在用户用必要的网格费用填充编辑框后才显示条形图和成本数据,然后单击“输入”按钮。

我已经看到了一些在 GUI 中导入 excel 文件的示例,但是我看到的那些完全导入文件,或者对于那些对 GUI 编码知之甚少的人来说太难了。有没有简单的解决方案?

【问题讨论】:

    标签: matlab user-interface import range xlsx


    【解决方案1】:

    在 Matlab 中,xlsread 函数有一个参数,您可以在其中指定要读取的工作表和范围。 http://www.mathworks.com/help/matlab/ref/xlsread.html

    对于范围参数,可以像在excel中一样指定范围

    例如。

    xlsread('filename', 'A1:B10')
    

    读取前 10x2 个单元格。

    但是,我建议您在 Matlab 中使用 Microsoft 的 VBA 语言来导入数据,具体取决于您的 excel 文件的大小。我发现这种方法对于更大的数据集更有效。

    如果您有兴趣,这里有一个如何使用它的示例:

    excelObj = actxserver('Excel.Application');
    fileObj = excelObj.Workbooks.Open(filename);
    sheetObj = fileObj.Worksheets.get('Item', sheetnumber);
    
    %Read in ranges the same way as xlsread!
    indata = sheetObj.Range('A1:B10').Value;
    

    我没有太多使用指南构建 GUI 的经验,但我认为您需要为希望与用户交互的组件添加回调函数。在这些回调函数中,您可以设置一个布尔值,指示用户是否已完成开始计算所需的操作。

    祝你好运!

    【讨论】:

    • 感谢您的意见。我已经在我的 m.file 函数中获得了 xlsread。我遇到的问题是让它在 GUI 中工作,用户将能够从他们导入的 xls 文件中导入他们指定的一系列数据。 GUI m.file 和常规脚本之间的工作方式似乎完全不同。
    • 您希望用户如何选择范围?您是否希望在文件中的特定单元格中指定它,例如“A1”?还是您想要在 GUI 中选择的范围?
    • 我希望它在 GUI 中完成。用户将从 GUI 浏览他们的 excel 文件,然后选择导入范围。
    【解决方案2】:

    在 gui 中使用编辑文本,用户可以在其中指定数据范围,然后您可以使用 xlsread('filename', cell_array),(其中单元格数组包含先前指定的编辑文本的字符串属性) 在另一个按钮的回调中,您必须设计在用户进入范围后执行。如果您使用 GUIDE 或以编程方式创建,则可以完成。请注意我的英语有点破旧

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-08
      • 2018-11-30
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多