1.在MATLAB App中,如果在用户选择文件时应用程序最小化,可能是因为调用了与文件对话框交互的函数,例如 uigetfile
,导致应用程序失去焦点。为了解决这个问题,你可以尝试以下方法:
-
修改窗口状态: 在调用文件对话框之前和之后,可以尝试设置应用程序窗口的状态,确保在文件对话框打开期间不会最小化应用程序。你可以在打开文件对话框之前将窗口状态保存下来,然后在选择文件后将其还原。
% 在打开文件对话框之前保存窗口状态 app.WindowStateBeforeFileDialog = app.UIFigure.WindowState; % 打开文件对话框 [filename, path] = uigetfile({'*.xlsx;*.xls', 'Excel文件 (*.xlsx, *.xls)'}, '选择Excel文件'); % 选择文件后,还原窗口状态 app.UIFigure.WindowState = app.WindowStateBeforeFileDialog;
app.UIFigure.WindowState其中UIFigure换为自己的app窗口名字。请确保在APP中有一个合适的属性
WindowStateBeforeFileDialog
来存储窗口状态。 -
修改对话框的父窗口: 在调用文件对话框时,可以尝试将应用程序窗口作为文件对话框的父窗口,这样可以确保文件对话框与应用程序窗口关联。
[filename, path] = uigetfile('*.xlsx', '选择Excel文件', 'Parent', app.UIFigure);
这样做可能有助于防止文件对话框导致应用程序最小化。,目前版本问题 可能会报错。主要是uigetfile可能没有Parent这个属性!
3.如果你想要确保文件对话框显示在你的 App 界面之上,你可以在调用 uigetfile
之前将 App 主窗口的句柄置于前台:
figure(app.UIFigure);
[filename, path] = uigetfile('*.xlsx', '选择Excel文件');
figure(app.UIFigure)
这一行代码的作用是将 App 的主窗口(UIFigure
)置于前台,即使用户在执行代码期间点击了其他窗口,也会将焦点重新带回到 App 主窗口。这样做是为了确保文件选择对话框显示在 App 窗口的前面,而不是在其他窗口之上。
以上3种方法不能确保一定能够实现这个焦点丢失问题!
参考来源:
控制图窗窗口的外观和行为 - MATLAB- MathWorks 中国
科学网—MATLAB App Designer关于uifigure的菜单栏显示及程序显示的问题。(生僻技巧) - 王磊的博文
2.matlab的xlsread读取excel函数实现读取中文
如果直接输出一个内容,则MATLAB默认输出Excel的数字内容
data=xlsread('文件路径\文件名');
如果指定返回三个值,那么,第一个输出的是Excel数字部分,第二个输出的为Excel的文本内容,第三个输出的为Excel全部内容,其中,第二个和第三个输出的都为元胞数组形式,只有第一个输出的是矩阵形式
[a,b,c]=xlsread('文件路径\文件名')