How to use xlswrite and Excel = actxserver('Excel.Application') together
    6 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I want to write many values in the Excel sheet with two different color based on the condition. So I am using for loop. with in the for loop xlswrite used for write the value in xls and Excel = actxserver('Excel.Application') used for color the particular cell based on the condition. But I am getting the error that ".xls is not writable.It may be locked by another process." could you help me to resolve the issue. help me to use xlswrite and Excel = actxserver('Excel.Application') together (or) how to write a value in the particular cell by Excel = actxserver('Excel.Application')
The code is below
   for intration1=1:row
    for intration2=1:column
        % logic for Calculate the values
        % logic for Calculate the values
        range_ip=strcat(sprintf('%c','D'+(intration2)),num2str(10+intration1));
        if condition    
             Excel = actxserver('Excel.Application');
             Excel.Workbooks.Open(strcat(pwd,'\',file));
             Range= Excel.Range(range_ip);
             Range.Interior.ColorIndex = 4;
        else
             Excel = actxserver('Excel.Application');
             Excel.Workbooks.Open(strcat(pwd,'\',file));
             Range= Excel.Range(range_ip);
             Range.Interior.ColorIndex = 3;
        end   
    end
end
Thanks in Advance,
Regards, Suresh.S
0 Commenti
Risposta accettata
  Meade
      
 il 26 Feb 2018
        
      Modificato: Stephen23
      
      
 il 28 Feb 2018
  
      xlswrite automatically closes the ACTX session at the end of the call.
Try xlswrite1 from the FEX. This just leaves the connection open so that you can continue to invoke calls (as in your example).
You must close the connection when you are done (example code in the FEX submission). Best of luck.
3 Commenti
  Meade
      
 il 28 Feb 2018
				How about this:
    % Write headers
    xlswrite1(FID,YourString,sheetName,'A1');
    % Clean up appearance
    ExcelSheets_curr = get(ExcelSheets, 'Item', sheetName);
    ExcelSheets_curr.Activate;
    ExcelSheets_curr.Range('A1').Font.Bold = 1;             %Bold 
    ExcelSheets_curr.Range('A:B').HorizontalAlignment = 2;  %Left justify
    ExcelSheets_curr.Range('A:B').EntireColumn.AutoFit;     %Autofit
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Spreadsheets in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!