xlwrite not writing when complied using Application Compiler
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
javaaddpath('jxl.jar');
javaaddpath('MXL.jar');
import mymxl.*;
import jxl.*;
filename = 'Test.xls';
data = {A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R}
xlwrite('./Test.xls',data);
When I use this code in MATLAB R2014b the test.xls is created in the folder where the .m is. There is more code in the .m file, but I have not included as this is just defining variables.
When I compile this using the Application Compiler, the xls file is not created. I have included all files that I got in the xlwrite download, when I compiled. I also included the ./ to indicate that the xls should be written in the folder the app is. But still no file is written...
Can anyone advise me where I am going wrong when I open the app after compiling please?
0 Commenti
Risposte (2)
Kirby Fears
il 21 Set 2015
If no error is being thrown by xlwrite, chances are your current directory at runtime is not where you think it is.
You could add "pwd" to the line above xlwrite to see what the current directory is at runtime.
3 Commenti
Kirby Fears
il 21 Set 2015
Can you show how you are executing the compiled code and what the command line output is?
Image Analyst
il 21 Set 2015
The real executable is not where you put the executable, but, at least in Windows, in some secret hidden folder. Not sure about on the Mac like you have. Anyway, that's why you should never NOT use a specific folder when reading and writing files from an executable. You should always specify exactly where you want to read or write the file.
For what it's worth, I've given code below to figure out where the executable actually lives, though I think it only works for Windows.
% Returns the folder where the compiled executable actually resides.
function [executableFolder] = GetExecutableFolder()
try
if isdeployed
% User is running an executable in standalone mode.
[status, result] = system('set PATH');
executableFolder = char(regexpi(result, 'Path=(.*?);', 'tokens', 'once'));
% fprintf(1, '\nIn function GetExecutableFolder(), currentWorkingDirectory = %s\n', executableFolder);
else
% User is running an m-file from the MATLAB integrated development environment (regular MATLAB).
executableFolder = pwd;
end
catch ME
errorMessage = sprintf('Error in function %s() at line %d.\n\nError Message:\n%s', ...
ME.stack(1).name, ME.stack(1).line, ME.message);
uiwait(warndlg(errorMessage));
end
return;
0 Commenti
Vedere anche
Categorie
Scopri di più su Spreadsheets in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!