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

你可能感兴趣的:(matlab)