- Don't dynamically name variables in workspace
- You don't want to be calling writetable repeatedly, it should all be done in one operation.
- Where ever you have multiple repeated lines like that, there is an easier way
I keep getting the error, "Unable to write to file 'xxxx.xlsx'. You may not have write permissions or the file may be open by another application."
조회 수: 40 (최근 30일)
이전 댓글 표시
I keep receiving this error when attempting to write tables to Excel from MATLAB.
%% Velocity Tables
T1 = table(vx1,'VariableNames',{'CummulativeVelocity'});
T2 = table(vy1,'VariableNames',{'CummulativeVelocity'});
T3 = table(vz1,'VariableNames',{'CummulativeVelocity'});
T4 = table(vx2,'VariableNames',{'CummulativeVelocity'});
T5 = table(vy2,'VariableNames',{'CummulativeVelocity'});
T6 = table(vz2,'VariableNames',{'CummulativeVelocity'});
T7 = table(vx3,'VariableNames',{'CummulativeVelocity'});
T8 = table(vy3,'VariableNames',{'CummulativeVelocity'});
T9 = table(vz3,'VariableNames',{'CummulativeVelocity'});
T10 = table(vx4,'VariableNames',{'CummulativeVelocity'});
T11 = table(vy4,'VariableNames',{'CummulativeVelocity'});
T12 = table(vz4,'VariableNames',{'CummulativeVelocity'});
filename = 'Velocity2.xlsx';
writetable(T1,filename,'Sheet',1,'Range','A1');
writetable(T2,filename,'Sheet',1,'Range','C1');
writetable(T3,filename,'Sheet',1,'Range','E1');
writetable(T4,filename,'Sheet',2,'Range','A1');
writetable(T5,filename,'Sheet',2,'Range','C1');
writetable(T6,filename,'Sheet',2,'Range','E1');
writetable(T7,filename,'Sheet',3,'Range','A1');
writetable(T8,filename,'Sheet',3,'Range','C1');
writetable(T9,filename,'Sheet',3,'Range','E1');
writetable(T10,filename,'Sheet',4,'Range','A1');
writetable(T11,filename,'Sheet',4,'Range','C1');
writetable(T12,filename,'Sheet',4,'Range','E1');
Here is the code I am using. The code works fine for the first instance of writetable, but the error will come up when attempting to run any other instance. I have found that I can manually end the Excel process in Task Manager, but this has to be done every time, while also creating a second copy of the worksheet. This second worksheet is the one that has the new table written in it. So, in order to continue the process I have to rename the copy and delete the previous version.
There must be a way to either better write this code (I am still pretty green), or to add something to fix this error. I don't kow what either of these solutions would be. Also, Excel is closed for each run of writetable.
댓글 수: 2
John Doe
2019년 10월 7일
A few things...
Can you show the code you used to create vx1, vy1 vz1 etc. Lets get that in to better format then deal with creating the xlsx.
채택된 답변
John Doe
2019년 10월 7일
편집: John Doe
2019년 10월 8일
I've updated the answer to resolve your specific issue. Though I would suggest doing all processing in MATLAB not excel since that is what its for. With this solution all the data is stored in a cell array idt. Each cell idt{1} for example contains 1 set of test data from the accel.
idt{1} = [ax1 ay1 az1]; % quick fix - but try import your data in to one variable, rather than directly in to workspace.
idt{2} = [ax2 ay2 az2];
idt{3} = [ax3 ay3 az3];
idt{4} = [ax4 ay4 az4];
for k = 1:4
res{k} = cumtrapz(idt{k}(:,:))
res{k} = array2table(res{k}) % Convert data to table
res{k}.Properties.VariableNames = {'a1_X', 'a1_Y' 'a1_Z'} % Assign variable names for columns
writetable((res{k}),'results.xlsx','sheet',k) % Writetable to excel sheet
end
Without exporting to excel all you require is:
idt{1} = [ax1 ay1 az1]; % quick fix - but try import your data in to one variable, rather than directly in to workspace.
idt{2} = [ax2 ay2 az2];
idt{3} = [ax3 ay3 az3];
idt{4} = [ax4 ay4 az4];
for k = 1:4
res{k} = cumtrapz(idt{k}(:,:))
end
Ask a question regarding calculating velocity here and we can have a look.
댓글 수: 5
John Doe
2019년 10월 8일
Updated answer, please accept.
Ask a new question on completing the rest of your analysis in MATLAB.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Spreadsheets에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!