レポート フォームの穴埋め
フォーム テンプレートを作成するときに、テンプレートの ID と各ホールを関連付けます。この ID により、DOM の関数 moveToNextHole を使用して、フォーム内のホールを移動できます。
関数 moveToNextHole を最初に実行するとき、DOM API はテンプレート内にある最初のホールまでのすべてのテキストを出力ドキュメントにコピーします。この時点で、DOM の関数 append を使用して、出力ドキュメントへのコンテンツの追加を開始できます。それにより、最初のホールが埋まります。
関数 moveToNextHole を次に実行すると、DOM API はテンプレート内の最初のホールと 2 番目のホールの間にあるすべてのテキストを出力ドキュメントにコピーします。その後、コンテンツを出力ドキュメントに追加して、2 番目のホールを埋めることができます。このように、テンプレートからコンテンツをコピーしてすべてのホールを埋めることで、出力ドキュメントを生成します。
たとえば、次の関数は、Title、Author および Content という名前のホールがある Word テンプレートからレポートを生成します。引数 title、author および content は、文字ベクトルであるとします。
function makerpt(title,author,content,rptname,rpttemplate) import mlreportgen.dom.* rpt = Document(rptname,"docx",rpttemplate); while ~strcmp(rpt.CurrentHoleId,"#end#") switch rpt.CurrentHoleId case "Title" append(rpt,title); case "Author" append(rpt,author); case "Content" append(rpt,content); end moveToNextHole(rpt); end close(rpt);