此示例演示如何使用MATLAB®报表生成器从Microsoft®Excel®电子表格创建PDF报表™. 在本例中,Excel电子表格按食品类别汇总年度食品进口。电子表格的来源是美国农业部经济研究服务处。电子表格可在美国进口食品.该示例使用了电子表格的本地副本。
从电子表格导入数据,Alltables.xlsx
,转换为MATLAB®单元阵列。
xlsfile=“Alltables.xlsx”;年=读取单元(xlsfile,“表”,“食品美元”,“范围”,“D2:V2”);数据=读取单元(xlsfile,“表”,“食品美元”,“范围”,“D7:V21”);类型=读取单元(xlsfile,“表”,“食品美元”,“范围”,“A7:A21”);单位= readtable (xlsfile,“表”,“食品美元”,“范围”,“K3: K3”,“ReadVariableNames”,假);
导入DOM和报表API包,这样就不必使用长的、完全限定的类名。
进口mlreportgen.report*进口mlreportgen.dom*
创建一个容器来保存PDF报表的报表内容。
rpt=报告(“食品进口报告”,“pdf”);
创建标题页并将其添加到报告中。
tp=标题页();标题=《基于美国农业部多年数据的食品进口报告》;tp.图像=“peppers.png”;tp。作者=“无名氏”; tp.PubDate=日期;添加(rpt,tp);
使用创建和添加目录mlreportgen.report.TableofContents
记者。该报表根据报表中的章节和章节标题自动创建目录。
toc = TableOfContents ();add (rpt, toc);
创建并格式化按食品类别划分的年度进口线图。
图(“颜色”,“w”);ax =轴(图,“字体大小”t=str2倍(年);为I = 1:size(data,1) hold在…上;绘图(ax,t,[数据{i,:}],“线宽”,1);结束xlabel(“年”);ylabel(units.Var1{:});图例(类型,“地点”,“东北外”);头衔(“食品进口”);
创建一个章节,并将线条图添加到其中。
ch =章(“进口总结图”)图=图(图);添加(ch,图);添加(rpt,ch);
格式化数据并创建单个字符串数组,表格数据
,可以用来创建mlreportgen.dom.Table
对象
tableData=cellfun(@(x)sprintf(“% .0f”,x),数据);tableData=[类型tableData];tableHeader=[""字符串(年)];tableData=[tableHeader;tableData]
表格数据=16×20串“1999”“2000”“2001”“2002”“2003”“2004”“2005”“2006”“2007”“2008”“2009”“2010”“2011”“2012”“2013”“2014”“2015”“2016”“2017”“活肉类”“1190”“1419”“1771”“1724”“1277”“1134”“1672”“2172”“2588”“2266”“1656”“2007”“1886”“2192”“2190”“3009”“2773”“2103”“2020”“肉类”“3261”“3828”“4256”“4283”“4427”“5719”“5752”“5244”“5367”“5060”“4612”“5088”“5755”“6245”“6530”“8940”“9992”“8589”“8878”“鱼贝类2/ 8860”“9880”“9663”“9963”“10860”“11106”“11840”“13112”“13435”“13912”“12934”“14517”“16459”“16468”“17784”“20054”“18521”“19261”“21324”“乳制品”“930”“922”“996”“1009”“1110”“1292”“1306”“1501”“1596”“1353”“1347”“1502”“1604”“1649”“1844”“1893”“1876”“1827”“蔬菜”“3632”“3771”“4157”“4391”“5082”“5730”“6043”“6619”“7256”“7801”“7525”“8706”“9667”“9946”“10734”“10930”“11290”“12469”“12743”“水果”“4764”“4629”“4665”“5068”“5558”“5962”“6874”“7707”“9217”“9888”“9640”“10649”“12538”“13602”“14808”“15955”“17157”“18383”"坚果" "794" "809" "670" "701" "776" "1078" "1122" "1099" "1181" "1351" "1278" "1462" "1863" "2000" "2000" "2361" "2767" "2871" "3301" "咖啡,茶,食品、香料、调味品、3604、3442、2401、2455、2872、3144、3771、4195、4791、5581、5160、6265、9716、8726、7633、8299、8536、8311、9069、谷物、2659、2735、2990、3343、3618、4010、441、4910、5915、7690、6846、7138、8063、9111、10257、10031、10030、10179、10861、植物油、1357、1362、1177、1302、1507、2241"2363" "2818" "3517" "5695" "4039" "4509" "6794" "6236" "6665" "7337" "6304" "6522" "7225" "Sugar and candy" "1618" "1572" "1581" "1843" "2131" "2111" "2474" "3021" "2606" "3011" "3081" "4107" "5207" "4784" "4327" "4582" "4705" "4693" "4720" "Cocoa and chocolate" "1522" "1404" "1536" "1761" "2439" "2484" "2751" "2659" "2662" "3299" "3476" "4295" "4681" "4096" "4159" "4728" "4860" "5081" "5007" "Other edible products" "2121" "2102" "2252" "2482" "3637" "4784" "5536" "5963" "6080" "6701" "6111" "6782" "8133" "10978" "9831" "9716" "9592" "9351" "10134" "Beverages 3/" "4412" "4816" "5101" "5795" "6598" "7024" "7887" "9212" "9913" "9833" "8721" "9263" "10143" "10858" "11248" "11964" "12786" "13493" "14383" "Liquors" "2382" "2726" "2847" "3091" "3438" "3709" "4090" "4512" "5048" "5040" "4787" "5189" "5734" "6023" "6392" "6587" "6774" "7165" "7363"
创建一个mlreportgen.dom.Table
对象中的食品导入数据表格数据
变量。指定表格格式。
表=表(tableData);表格风格= {...边界(“固体”),...罗塞普(“固体”),...ColSep (“固体”),...外缘蛋白(“5 pt”,“5 pt”,“5 pt”,“5 pt”)};table.TableEntriessStyle={InnerMargin(“2pt”)}; 头型={...写成BackgroundColor (“LightBlue”),...粗体};表。第(1)行。样式=人头样式;grps=表格组;grps.Span=1;grps.Style=人头式;表1.ColSpecGroups=GRP;
要在报表页面上容纳宽表,请使用mlreportgen.utils.TableSlicer
对象
slicer=mlreportgen.utils.TableSlicer(...“表格”、表...“MaxCols”8...“重复Cols”,1); slices=slicer.slice();
为每个表切片创建一个章节,并将章节添加到报告中。
为切片=切片ch=章节();章节标题=strjoin([“数据”年份(切片:StartCol-1)...“到”年(slice.EndCol-1)]);添加(ch, slice.Table);add (rpt, ch);结束
关闭(rpt);rptview (rpt)
mlreportgen.dom.Table
|mlreportgen.report.Figure
|mlreportgen.utils.TableSlicer
|mlreportgen.report.Section
|mlreportgen.report.TitlePage
|mlreportgen.report.TableOfContents