【MATLAB】如果对Excel的指定工作簿进行首行筛选的设置 环球最新
背景
因为在写大量图片自动化插入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
使用时请注明来源