主要内容

Excel转PDF

本示例展示如何使用MATLAB®report Generator™从Microsoft®Excel®电子表格创建PDF报告。在本例中,Excel电子表格按食品类别总结了年度食品进口。该电子表格的来源是美国农业部经济研究局。电子表格可在美国食品进口.该示例使用了电子表格的本地副本。

导入Excel数据

从电子表格导入数据,Alltables.xlsx,转化为MATLAB®单元格数组。

xlsfile =“Alltables.xlsx”;Years = readcell(xlsfile,“表”“粮食美元”“范围”“D2: V2”);数据= readcell(xlsfile,“表”“粮食美元”“范围”“D7: V21”);类型= readcell(xlsfile,“表”“粮食美元”“范围”“A7: A21”);单位= readtable(xlsfile,“表”“粮食美元”“范围”“K3: K3”“ReadVariableNames”、假);

创建报表

导入DOM和Report API包,这样就不必使用长且完全限定的类名。

进口mlreportgen.report。*进口mlreportgen.dom。*

创建一个容器来保存PDF报告的报告内容。

rpt =报告(“食物进口报告”“pdf”);

创建标题页

创建并添加报告的标题页。

tp = TitlePage();tp。Title =《基于美国农业部多年数据的食品进口报告》;tp。形象=“peppers.png”;tp。作者=“John Doe”;tp。PubDate =日期;add (rpt, tp);

创建目录

方法创建和添加目录mlreportgen.report.TableofContents记者。该报表根据报表中的章节和节标题自动创建目录。

toc = TableOfContents();add (rpt, toc);

在MATLAB中绘制数据

按食品类别创建并格式化年度进口的折线图。

图=图(“颜色”“w”);Ax =轴(fig,“字形大小”12);T = str2double(年);I = 1:size(data,1) hold;情节(ax, t,{我:}][数据,“线宽”1);结束包含(“年”);ylabel (units.Var1 {:});传奇(类型,“位置”“northeastoutside”);标题(“进口食品”);

将图添加到报告中

创建一个章节,并添加线状图。

ch =章节(“导入汇总图”);fig =图(fig);添加(ch,无花果);add (rpt, ch);

将数据转换成适合创建DOM表的表单

格式化数据并创建一个字符串数组,tableData,可用于创建mlreportgen.dom.Table对象。

tableData = cellfun(@(x)sprintf(“% .0f”, x),数据);tableData = [types tableData];tableHeader = [""字符串(年)];tableData = [tableHeader;tableData]
tableData =16×20字符串"" 1999" "2000" "2001" "2002" "2003" "2004" "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2008" "2009" "2010" "2011" "2012" "2013" "2014" "2015" "2016" "2017" "1277" "1190" "1419" "1771" "1724" "1277" "1134" "1672" "2172" "2172" "2266" "1656" "2007" "1886" "2192" "2190" "3009" "2773" "2103" "2020" "肉类"" 3261" "3828" "4256" "4283" " 5427 "" 5719" "5752" "5244" "5367" "5060" "4612" "5088" "5755" "6245" "8589" "8878" "鱼类和贝类"" 8860" "9880" "9663" "10860" "11106""11840" "13112" "13435" "13912" "12934" "14517" "16459" "16468" "20054" "18521" "19261" "21324" "乳业" "930" "922" "996" "1009" "1292" "1388" "1406" "1501" "1596" "1353" "1347" "1502" " 1504 " " 1349 " " 1349 " "1347" " 1302 " " 1504 " " 1349 " " 1342 " " 1382 " " 5791 " "5730" "6619" "7256" "7801" " 7571 " "8706" "9667" "9946" "10734" "10930" " 11269 " "12743" "水果" "4764" "4629" "4665" "5068" " 5564 " "9217" "9640" "10649" "11974""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" "5160" "6265" "9716" "8726" "7633" "8299" "8536" "8311" "9069" "谷物" "2659" "2735" "2990" "3343" "3618" "4010" "4241" "4910" "5915" "7690" "6846" "7138" "8063" "9111" "10257" "10031" "10030" "10179" "10861" "植物油" "1357" "1362" "1177" " 1307 " "2241" "2363" "2818" "3517" "5695" "6794" "6236" " 672 " "1581" "1843" "2131" "糖和糖果" "1618" "1581" "1843" "2131""2111" "2474" "3021" "2606" "3011" "3011" "3011" "4107" " 4207 " "4784" "4582" "4705" "4693" "4720" "可可和巧克力" "1522" "1404" "1536" "1761" " 2459 " "2662" "3299" "3476" "4295" "4681" "4096" "4159" "4728" " 4882 " "2482" "3637" "4784" "5536" "2482" "6701" "6111" "6782" 下载188bet金宝搏"10978" "9831" "9716" "9592" "9351" "10134" "饮料3/" "4412" "4816" "5101" "6598" "7887" "9212" "9913" "9833""8721" "9263" "10143" "10858" "11248" "11964" "12786" "13493" "14383" "酒" "2382" "2726" "2847" "3091" "3438" "3709" "4090" "4512" "5048" "5040" "4787" "5189" "5734" "6023" "6392" "6587" "6774" "7165" "7363"

在报告中创建一个食品进口表

创建一个mlreportgen.dom.Table对象中的食品导入数据tableData变量。指定表格式。

table = table (tableData);表格样式= {...边界(“固体”),...RowSep (“固体”),...ColSep (“固体”),...OuterMargin (“5 pt”“5 pt”“5 pt”“5 pt”)};表格TableEntriesStyle = {InnerMargin(“2 pt”)};headerStyle = {...写成BackgroundColor (“LightBlue”),...大胆的};table.row(1)。Style = headerStyle;grps = TableColSpecGroup;毛评点。Span = 1;毛评点。Style = headerStyle;表格ColSpecGroups = grps;

通过垂直切片将表格贴合到报表页面

若要在报表页上放置宽表,请将表垂直分为一组较窄的表(片)mlreportgen.utils.TableSlicer对象。

切片器= mlreportgen.utils.TableSlicer(...“表”、表...“MaxCols”8...“RepeatCols”1);Slices = slice .slice();

为表切片添加章节

为每个表片创建一个章节,并将这些章节添加到报表中。

slice = slices ch = Chapter();ch.Title = strjoin([“数据”年(slice.StartCol-1)...”到“年(slice.EndCol-1)]);添加(ch, slice.Table);add (rpt, ch);结束

关闭并查看报表

关闭(rpt);rptview (rpt)

另请参阅

|||||

相关的话题