Matlab App Design表格显示Excel数据,并实现添加、删除功能。(解决删除数据自动填充问题)

本文代码基于Matlab 2021b App Design。

读者可以从此篇文章解决哪些问题:

1、实现表格与Excel之间的相互连接

2、如何通过表格添加、删除数据并保存到Excel

3、自动读取Excel行数,自动添加列名称

4、解决删除表格数据自动填充问题

以下是App的展示:

 

1、如何实现Table与Excel之间的连接(自动读取Excel行数,自动添加列名称):

% 将Excel数据在Table上显示,并自动识别列数
    app.Excel_Path = "Data.xlsx"
    app.Excel_Data = readtable(app.Excel_Path);
    % 获取Excel列数
    app.RowNumber = size(app.Excel_Data,1);
    app.Main_UITable.RowName = "Point_"+(0:app.RowNumber);
    % 将数据显示在Table上
    app.Main_UITable.Data = app.Excel_Data;

% 将Table上的数据保存至Excel
    writetable(app.Main_UITable.Data,app.Excel_Path); 
    
            

这样就实现了Table与Excel的互连。

2、如何添加数据到表格(同步添加数据到Excel):

app.NewData = {app.XEditField.Value, app.YEditField.Value, app.ZEditField.Value};
% 将新数据添加到原有数据后
app.Excel_Data = [app.Excel_Data; app.NewData];
writetable(app.Excel_Data,app.Excel_Path);
Display(app)

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
function Display(app)
    % 读取Excel文件数据
    app.Excel_Data = readtable(app.Excel_Path);
    % 获取Excel列数
    app.RowNumber = size(app.Excel_Data,1);
    app.CallingApp.Main_UITable.RowName = "Point_"+(0:app.RowNumber);
    % 将数据显示在Table上
    app.CallingApp.Main_UITable.Data = app.Excel_Data;
end

3、如何删除表格数据(同步删除Excel数据):

        首先需要让matlab知道鼠标选中的是表格中的哪里,需要定义TableCellSelection回调:

% 鼠标选择行
app.mouse_ind = indices(1);

        然后定义删除按钮:

% 删除行
app.Main_UITable.Data(app.mouse_ind,:) = [];
%删除Excel文件
delete(app.Excel_Path);
% 将表格数据写入Excel文件         
writetable(app.Main_UITable.Data,app.Excel_Path); 
Display(app)

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
function Display(app)
    % 读取Excel文件数据
    app.Excel_Data = readtable(app.Excel_Path);
    % 获取Excel列数
    app.RowNumber = size(app.Excel_Data,1);
    app.Main_UITable.RowName = "Point_"+(0:app.RowNumber);
    % 将数据显示在Table上
    app.Main_UITable.Data = app.Excel_Data;
end

这里有个问题,那就是为什么要加这样一行代码

delect(app.Excel_Path)

,来删除原来的Excel文件,在把数据重新保存到一个新的文件里,为什么不能用原来的文件?

这里我们先来看一下,如果去掉这一行代码会发生什么?

 

可以看到,点击删除按钮后,数据虽然被删除了,但会多补充一条数据,而自动补充的数据,就是倒数第2行数据。为什么呢?本人苦思冥想了一个晚上,终于悟到了。

答案:因为删除一行数据后,表格里的数据保存到了Excel 里,只是替换掉了除最后一行之外的其他数据,Excel 原来的最后一行的数据并没有改变。举个例子,原来Excel 里有编号1-10的数据,显示在Table 上也是编号1-10的数据,现在我们将Table里的编号1删除掉,表格里剩下编号2-10的数据,一共9行数据;然后保存到Excel 里,会替换掉Excel里编号1-9的数据,唯独编号10的数据保存下来了,这是Excel 里的数据是【2-10;10】,任然是10行;再显示到表格里时,就会出现如上问题。

完整代码:MatlabAppDesign表格显示Excel数据,并实现添加、删除功能。(解决删除数据自动填充问题)-其它文档类资源-CSDN文库icon-default.png?t=M1L8https://download.csdn.net/download/m0_48937452/83341277

  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
实现MATLAB GUI 界面中将数据输入到 Excel 中,并在每次输出后自动填充 Excel 表格,可以使用以下步骤: 1. 在 MATLAB GUI 中创建一个表格(uitable)用于显示 Excel 中的数据。可以使用 `uitable` 函数创建表格,也可以在 GUIDE 工具中使用可视化界面创建表格。 2. 在 GUI 中创建一个按钮(pushbutton)用于触发将数据写入 Excel 中的操作。可以使用 `uicontrol` 函数创建按钮,也可以在 GUIDE 工具中使用可视化界面创建按钮。 3. 在按钮回调函数中,使用 `xlswrite` 函数将数据写入 Excel 文件,并使用 `xlsread` 函数读取 Excel 文件中的数据。然后,将读取到的数据填充表格中,使用 `set` 函数将表格数据设置为 `Data` 属性的值。 例如,假设要将 MATLAB GUI 界面中的数据写入 Excel 文件,并在每次输出后自动填充表格。可以使用以下代码实现: ``` % 在 MATLAB GUI 中创建一个表格(uitable) fig = uifigure; tbl = uitable(fig); % 在 MATLAB GUI 中创建一个按钮(pushbutton) btn = uibutton(fig, 'push', 'Button', 'Position', [100 100 100 22]); % 按钮回调函数,将数据写入 Excel 文件,并自动填充表格 function btn_callback(~, ~) % 指定 Excel 文件名和工作表名 filename = 'example.xlsx'; sheetname = 'Sheet1'; % 将 MATLAB GUI 界面中的数据存储在一个矩阵中 data = [1 2 3; 4 5 6; 7 8 9]; % 将数据写入 Excel 文件 xlswrite(filename, data, sheetname); % 读取 Excel 文件中的数据 data = xlsread(filename, sheetname); % 将读取到的数据填充表格中 set(tbl, 'Data', data); end % 将按钮回调函数与按钮关联 btn.ButtonPushedFcn = @btn_callback; ``` 这样,在 MATLAB GUI 界面中单击按钮后,将数据写入 Excel 文件,并自动将读取到的数据填充表格中。每次单击按钮后,表格中的数据自动更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值