%This code increases the speed of the xlswrite and works with Excel 2007
%function when used in loops or multiple times. The problem with the original function
%is that it opens and closes the Excel server every time the function is used.
%To increase the speed I have just edited the original function by removing the
%server open and close function from the xlswrite function and moved them outside
%of the function. To use this first run the following code which opens the activex
%server and checks to see if the file already exists (creates if it doesnt):
% Excel = actxserver('Excel.Application');
% File = 'C:\Folder\File'; %Make sure you put the whole path
% if ~exist(File,'file')
% ExcelWorkbook = Excel.workbooks.Add;
% ExcelWorkbook.SaveAs(File)
% ExcelWorkbook.Close(false);
% end
% ExcelWorkbook = Excel.workbooks.Open(File);
%Then run the new xlswrite2007 function as many times as needed
%or in a loop (for example xlswrite2007(File,data,location).
%Then run the following code to close the activex server:
% ExcelWorkbook.Save
% ExcelWorkbook.Close(false) % Close Excel workbook.
% Excel.Quit;
% delete(Excel);
% This is a modern version of xlswrite1 posted by Matt Swartz in 2006, and
% as such most of these comments are copied from his original post
Travis (2021). xlswrite2007 (https://www.mathworks.com/matlabcentral/fileexchange/25288-xlswrite2007), MATLAB Central File Exchange. Retrieved .
Inspired by: xlswrite1
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
I'm running Matlab 7.12.0 with Windows 7 and Excel 2007 and I have tried both
Excel = evalin('base','Excel');
and
Excel = evalin('caller', 'Excel');
and they are both throwing the error
??? Error using ==> evalin
Undefined function or variable 'Excel'.
Do you mind shedding some light on the issue for me?
I had to change the line Excel=evalin('base','Excel');
to
Excel = evalin('caller', 'Excel');
to get it to work on my machine.