首页
搜索 搜索
当前位置:企业资讯 > 正文

【MATLAB】如果对Excel的指定工作簿进行首行筛选的设置 环球最新

2023-03-16 01:02:56 哔哩哔哩

背景

因为在写大量图片自动化插入word的可视化执行程序便于项目组使用,为了方便传递文件,要求输入进Excel的文件必须首行筛选

相关代码

%% 参数设置


(资料图片仅供参考)

% ProjectAddress;   % 需打开文件的绝对地址

% CurrentSheets;     % 需设置首行筛选的工作簿名称,如工作簿名称'原始数据'

% SelectID;               % 首行筛选的ID, 如'A1:I1'

%% 写入数据到Excel文件

deleteSheet(ProjectAddress,CurrentSheets); % 若要打开筛选功能,此命令必须存在

writecell(TotalRawData,ProjectAddress,'Sheet',CurrentSheets,"WriteMode", "overwritesheet"); % 写入数据

%% 打开文件

Excel = actxserver('Excel.Application');

set(Excel, 'Visible',0); % 窗口隐藏

set(Excel,'DisplayAlerts',0);

try Workbook = Excel.Workbooks.Open(ProjectAddress);

catch;error('工程文件可能已打开');

end

%% 显示指定工作簿

[~, sheets] = xlsfinfo(ProjectAddress); % 读取当前Excel文件的所有工作簿

SheetID = find(ismember(sheets,CurrentSheets)); % 查找指定工作簿的ID

Excel.Sheets.Item( SheetID ).Activate; % 打开指定工作簿

CurrentRange = Excel.Range(SelectID).Select; % 选中指定列的首行 

Excel.Selection.AutoFilter();% 打开或关闭选中的单元格筛选 

%若筛选已存在则该功能为取消筛选,若筛选未开则是打开筛选

%% 保存并退出

Excel.ActiveWorkBook.Save;

Excel.ActiveWorkBook.Close(true);

Excel.Quit;

注意事项

执行AutoFilter操作时,若筛选已存在则该功能为取消筛选,若筛选未开则是打开筛选;因此为保证筛选处于未开状态,需使用deleteSheet。

By:何其

2023年3月16日01:01:26

使用时请注明来源