Report Generator - Prevent Table from Breaking onto Multiple Pages

Is there a way to automatically detect with the report generator when a table will not fit on page and insert a page break so that the table can start on the next page?

 Réponse acceptée

Sean de Wolski
Sean de Wolski le 17 Mar 2015
Since this only applies to docx reports, this can be done by defining a table style and then applying it when necessary.
Attached in the *.zip file is a word document with this custom table style.

6 commentaires

Is there documentation where I can read how to define a table style and apply and use it?
Thanks.
This code example reproduces the table style formats in the attached Word document.
import mlreportgen.dom.*
document = Document('MyDoc','docx');
for i = 1:11
append(document, Text(i));
end
table = Table(magic(16));
table.RowSep = 'solid';
table.ColSep = 'solid';
table.Border = 'double';
table.TableEntriesStyle = { KeepWithNext, KeepLinesTogether };
append(document, table);
close(document);
rptview(document.OutputPath);
I'm finding that even after including this line, the tables still split from one page to the next:
table.TableEntriesStyle = { KeepWithNext, KeepLinesTogether };
The top rows of my tables are getting split from the rest of the tables.
Madeline, do you have a minimal working example?
I suspect that it may have something to do with the fact that the top left cell in my tables are 'empty'. I've recreated something similar below:
import mlreportgen.dom.*;
d = Document('Test','docx');
table_sample = {[],'Sample Table';
'1','10%';
'2','20%';
'3','15%';
'4','15%';
'5','30%';
'6','5%';
'7','5%'};
for lx = 1:10
text_sample = Text('Sample Title');
append(d,text_sample);
tableObj = Table(table_sample);
tableObj.RowSep = 'solid';
tableObj.ColSep = 'solid';
tableObj.Border = 'double';
tableObj.TableEntriesStyle = { KeepWithNext, KeepLinesTogether };
append(d,tableObj);
end
close(d);
rptview(d.OutputPath);
The reason it's splitting isn't so much because it's empty as it is because [] creates an empty double array and the input should be a string.
Use '' instead.
table_sample = {'','Sample Table';
'1','10%';
'2','20%';
'3','15%';
'4','15%';
'5','30%';
'6','5%';
'7','5%'};

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by