用excel写数据,并使用ActiveX – Matlab修改表名

我需要使用Activex将数据导出到具有特定名称的Excel表格中。 这是我做的:首先,我将数据导出到第一个for循环中,然后使用第二个循环修改表格的名称。 即使在一个循环中也能完成吗? 我认为应该有另一个更好的主意。 注意:数据的大小各不相同。

try filename = fullfile(pwd,'example.xlsx'); for i=1:5 xlswrite(filename,[1 2;3 4]*i,i); end for i = 1:5 myExcel = actxserver('Excel.Application'); excelWorkBook = myExcel.Workbooks.Open(filename,0,false); excelWorkBook.Worksheets.Item(i).Name = ['new_sheet_' num2str(i)]; excelWorkBook.Save; excelWorkBook.Close; myExcel.Quit; end catch % Disp Error message..... end 

Fratyx的答案是最简单的实现,但是对于Excel对象模型的一些了解还有很长的路要走,所以下面是如何在一个循环中用ActiveX实现你的解决scheme:

  e = actxserver('excel.application'); w = e.Application.Workbooks.Add(); numnewsheets = 4; for i = 1:numnewsheets w.Worksheets.Add([],w.Sheets.Item(w.Sheets.Count),1); w.Worksheets.Item(i).Name = ['new_sheet_' num2str(i)]; w.Worksheets.Item(i).Cells.Range('A1:B2').Value = [1 2;3 4]; end w.SaveAs(filename) w.Close e.Quit e.delete 

要计算您的数据大小所需的范围,您将不得不打开文件“xlswrite”并复制子function“calcrange”。

xlswrite函数也接受一个string作为sheet参数。 所以只要用这个replace你的电话:

 xlswrite(filename,[1 2;3 4]*i,['new_sheet_' num2str(i)]);