In Report Generator DOM how can I make row heights size exactly to the text in the table?

8 次查看(过去 30 天)
When I create a simple table such as the below very simple code, I find that I get a very sprawling table with lots of padding around the text.
I've spent lots of time experimenting with styles, formats, and properties including Row Height and Table Padding and for some reason I can never reduce the row height below a certain size which includes lots of white space above and below the data or text in the cell. I would have thought this is the most basic requirement of table formatting but for some reason it's incredibly difficult to find out how to do this in the DOM.
I want to create large tables displaying text and numerical data with 10s or even 100s of rows, so need to make each row tiny.
Can anyone advise? Thanks!
import mlreportgen.dom.*;
d = Document('.\Reports\test', 'html');
%d.OutputPath='.\Reports\test.html';
open(d);
t = Table(testArray);
t.Style = {RowHeight('0.1in')};
t.Border = 'solid';
t.BorderWidth = '1px';
t.ColSep = 'solid';
t.ColSepWidth = '1';
t.RowSep = 'solid';
t.RowSepWidth = '1';
% Set this property first to avoid being overwritten.
t.TableEntriesStyle = {FontFamily('Arial'), Width('1in'), Height('0.01in'),Color('red'), Bold};
t.TableEntriesInnerMargin='0.01in';
t.TableEntriesHAlign = 'center';
t.TableEntriesVAlign = 'middle';
append(d, t);
close(d);
rptview('.\Reports\test', 'html');

回答(1 个)

Sean de Wolski
Sean de Wolski 2016-2-23
编辑:Sean de Wolski 2016-2-24
Try using the RowHeight class to specify the height of each individual row that you then append to the Table.
More
import mlreportgen.dom.*;
d = Document('.\test', 'html');
%d.OutputPath='.\Reports\test.html';
open(d);
t = Table(rand(10,3));
t.Style = {RowHeight('0.1in')};
t.Border = 'solid';
t.BorderWidth = '1px';
t.ColSep = 'solid';
t.ColSepWidth = '1';
t.RowSep = 'solid';
t.RowSepWidth = '1';
% Set this property first to avoid being overwritten.
t.TableEntriesStyle = {FontFamily('Arial'), Width('1in'), Height('0.01in'),Color('red'), Bold, InnerMargin('0') OuterMargin('0') ...
HAlign('center') VAlign('middle')};
t.TableEntriesInnerMargin='0.01in';
t.TableEntriesHAlign = 'center';
t.TableEntriesVAlign = 'middle';
append(d, t);
close(d);
rptview('.\test', 'html');
  3 个评论
Paul Kinnucan
Paul Kinnucan 2016-5-12
The root of the problem is that constructing a table entry from a string causes the DOM API to wrap the string in a paragraph over whose format you have no control. HTML surrounds a paragraph with lots of white space by default. To control the amount of white space, construct your table entries from paragraphs whose outer margins you specify. The following example shows how.
import mlreportgen.dom.*
rpt = Document('test');
table = Table(2);
table.Style={ResizeToFitContents};
table.TableEntriesInnerMargin='1mm';
table.Border = 'solid';
table.BorderWidth = '1px';
table.RowSep = 'solid';
table.RowSepWidth = '1px';
table.ColSep = 'solid';
table.ColSepWidth = '1px';
row = TableRow();
EntryParaStyle = {OuterMargin('0', '0', '0', '0')};
p = Paragraph('Col 1');
p.Style = EntryParaStyle;
append(row,TableEntry(p));
p = Paragraph('Col 2');
p.Style = EntryParaStyle;
append(row,TableEntry(p));
append(table, row);
row = TableRow();
p = Paragraph('data11');
p.Style = EntryParaStyle;
append(row,TableEntry(p));
p = Paragraph('data12');
p.Style = EntryParaStyle;
append(row,TableEntry(p));
append(table, row);
append(rpt,table);
close(rpt);
rptview(rpt.OutputPath);

请先登录,再进行评论。

类别

Help CenterFile 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!

Translated by