# how to write to one decimal point from matlab to excel

17 views (last 30 days)
yojitha etikala on 7 Feb 2022
Commented: yojitha etikala on 11 Feb 2022
Hello Guys,
I need to write the values to excel from matlab script with only one decimal point.
This is the code I used for exporting data to excel:
final_result = {Power;Power1;Power2;Power_percent};
if datasave==1
end
n= Columns+2;
xlsb = mod(n-1,26)+1 ;
xmsb = fix((n-1)/26) ;
%// find MSB (recursively if necessary)
if xmsb >= 1
col = [excel_column(xmsb) char(xlsb+64)] ;
else
col = char(xlsb+64) ;
end
cellReference = sprintf('%s1', col);
xlswrite(Spreadsheet_name, final, Tab_name, cellReference);
end
For example;
In excel it is showing like below:
Power 113.2790977
Power1 65.85196443
Power2 80.54553664
Power_percent 92.23339083
But I need the output to be:
Power 113.2
Power1 65.8
Power2 80.5
Power_percent 92.2
Can you guys help me with this?

Voss on 8 Feb 2022
You could convert those numbers to strings before writing, if you don't mind rounding to one decimal place rather than truncating:
xlswrite(Spreadsheet_name, cellfun(@(x)sprintf('%.1f',x),final,'UniformOutput',false), Tab_name, cellReference);
Or you can set the cells' NumberFormat directly, along these lines:

Image Analyst on 8 Feb 2022
What if you round your array with round before you send it to Excel?
array = round(array, 1);
xlswrite(filename, array);
##### 1 CommentShowHide None
yojitha etikala on 11 Feb 2022
Hello,
For example I have my array as
distance=20
speed=27
time=1200
power=34.4
result= [distance; speed; time; power]
finalresult=round(result,1)
when I do this it is showing me this below error, because the array is not values
ERROR: Error using round
First argument must be a numeric, logical, or char array.
So, it should read these values and round them off before exporting the values to excel.
how to do this? In my script , it is not the numbers in the array to round them off