背景
存在一个table类型的数据,需要导入到excel文件中
编写目的
(1)如果指定excel不存在,则新建并写入数据
(2)如果excel存在,指定工作簿不存在,则指定工作簿写入已存在的excel文件
(3)如果excel文字,指定工作簿也存在,则先删除存在的指定工作簿然后在新建并写入指定工作簿对应的数据
编写的函数
该函数需要调用函数deleteSheet,从ilovematlab论坛找到(具体来源忘记了) function deleteSheet(file,SheetName) Excel = actxserver('Excel.Application'); % 打开Excel作为COM自动化服务器 set(Excel, 'Visible',0);% 使应用程序不可见 set(Excel,'DisplayAlerts',0);% 使Excel不显示警报 Workbooks = Excel.Workbooks;% 掌握Excel的 handle [~, sheet_names] = xlsfinfo(file);% # 只有一个工作簿 if length( sheet_names ) == 1% 工作簿只有一个的时候再新建一个 Workbook=Workbooks.Open(file);% 打开Excel工作簿并激活它 Excel.ActiveWorkBook.Sheets.Add([]);% 新增一个 Workbook.Save; % 现在保存工作簿 Workbooks.Close;% 关闭工作簿 end if length( sheet_names ) == 1;[~, sheet_names] = xlsfinfo(file);end% # 两个以上删除一个% 重新读取工作簿名 Workbook=Workbooks.Open(file);% 打开Excel工作簿并激活它 Sheets = Excel.ActiveWorkBook.Sheets;% 获取活动工作簿中的工作表 Idx = ismember( sheet_names, SheetName );% 查找特定工作表 SheetName 并根据用户输入删除它们 [ MaxValue , Id ] = max( Idx ); if MaxValue == 1 current_sheet = get(Sheets, 'Item', Id ); invoke(current_sheet, 'Delete') % 已删除既有 SheetName end Workbook.Save;% 现在保存工作簿 Workbooks.Close;% 关闭工作簿 invoke(Excel, 'Quit');% # 退出服务器% 退出Excel delete(Excel);% 删除 ActiveX Object 的 handle end
函数应用说明
调用的函数deleteSheet来源确实是忘记了