Limiting export of digits in mlreport.gen.dom*?
4 次查看(过去 30 天)
显示 更早的评论
I'm using mlreport.gen.dom* to fill calculations into a word template with holes. For example:
hole1=1.535;
hole2=hole1*4000;
import mlreportgen.dom.*;
namethedoc='testing'
type = 'docx';
calltheform='must have a form to run this sample'
rpt = Document(namethedoc,type,calltheform);
open(rpt);
while(~strcmp(rpt.CurrentHoleId,'#end#'))
switch(rpt.CurrentHoleId)
case 'Hole1'
append(rpt,hole1);
case 'Hole2'
append(rpt,hole2);
end
moveToNextHole(rpt);
end
close(rpt);
docview('testing');
When running this on its own, none of the numbers round when they appear in Word (they report too many decimal points). To combat that, I added a separate rounding.m file for rounding and changed the cases to append(rpt,rounding(dx1)). If the number is small (between 0 and 5), I want several decimal points read out, otherwise, the nearest integer is fine. The function, given below, and several variants have not successfully put the rounded number into the document for the 0 to 5 range. It even takes given values, such as 1.535, and makes it into 1.534999999999999999.
function y=rounding(x)
clc
if x>0 && x<5
format short
y=round(x,5,'significant')
fprintf('%5.2f',y)
else
format short
y=round(x)
fprintf('%f',y)
end
end
I've tried with and without the fprintf and several other variations.
Any ideas about how I can limit the display of digits when copying from MATLAB to Word?
0 个评论
采纳的回答
Paul Kinnucan
2017-6-2
编辑:Paul Kinnucan
2017-6-2
Try this:
import mlreportgen.dom.*
d = Document('FloatingPoint', 'docx');
append(d, Paragraph(rounding(2.129999)));
append(d, Paragraph(rounding(6.5)));
close(d);
rptview(d);
function y=rounding(x)
if x>0 && x<5
format short
y=round(x,5,'significant');
y = sprintf('%5.2f',y);
else
format short
y=round(x);
y = sprintf('%0.0f',y);
end
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 MATLAB Report Generator Task Examples 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!