Main Content

mlreportgen.dom.Template クラス

名前空間: mlreportgen.dom
スーパークラス: mlreportgen.dom.Document

レポート テンプレート オブジェクトの作成

説明

レポート テンプレートを作成するには、mlreportgen.dom.Template オブジェクトを使用します。たとえば、Text オブジェクト、Paragraph オブジェクト、または Image オブジェクトなどの DOM コンテンツと TemplateHole オブジェクトを Template オブジェクトに追加して、生成コンテンツ用のホールをもつ固定コンテンツを含むテンプレートを作成できます。

メモ

Microsoft® Word for Mac は、DOM API テンプレートのホールの作成をサポートしていません。Mac で Word ドキュメント生成用の Word テンプレートを作成する必要がある場合は、DOM API を使用してテンプレートを作成できます。Template オブジェクトを作成し、mlreportgen.dom.TemplateHole を使用してホールを追加します。あるいは、Word を使用してテンプレートを作成し、そのテンプレートを Mac にコピーします。

mlreportgen.dom.Template クラスは handle クラスです。

作成

説明

templateObj = mlreportgen.dom.Template はテンプレート オブジェクトを作成し、TemplatePath プロパティを Untitled.htmtx に設定します。

templateObj = mlreportgen.dom.Template(templatePath) はテンプレート オブジェクトを作成し、TemplatePath プロパティを templatePath に設定します。templatePath にファイル拡張子が含まれていない場合、Type プロパティは既定値の HTML に設定されます。

templateObj = mlreportgen.dom.Template(templatePath,fileType) は、さらに Type プロパティを fileType に設定します。templatePath にファイル拡張子が含まれる場合、fileTypetemplatePath で指定されたファイル拡張子と一致していなければなりません。

templateObj = mlreportgen.dom.Template(templatePath,fileType,sourceTemplatePath) は、sourceTemplatePath で指定されたテンプレートに基づいてテンプレート オブジェクトを作成します。

入力引数

すべて展開する

新しいテンプレートのベースとして使用するテンプレートへのパス。文字ベクトルまたは string スカラーとして指定します。ソース テンプレートのタイプは、fileType 引数と一致していなければなりません。

プロパティ

すべて展開する

ドキュメントのカレント ホールの ID。文字ベクトルまたは string スカラーとして指定します。

属性:

SetAccess
private
Transient
true
NonCopyable
true

データ型: char | string

カレント テンプレート ホールのタイプ。"Inline" または "Block" として指定します。

  • インライン ホールは、段落要素が含むことのできるドキュメント要素 (TextImageLinkTargetExternalLinkInternalLinkCharEntity、または AutoNumber) を対象とする。

  • ブロック ホールは、ParagraphTableOrderedListUnorderedListDocumentPart、または Group の要素を含むことができる。

属性:

SetAccess
private
Transient
true
NonCopyable
true

データ型: char | string

このドキュメントの現在のページ レイアウト。mlreportgen.dom.DOCXPageLayout オブジェクト、mlreportgen.dom.PDFPageLayout オブジェクト、または [] として指定します。このプロパティは、Word ドキュメントと PDF ドキュメントに適用されます。Word ドキュメントの場合、この値は現在のページ レイアウトを指定する DOCXPageLayout オブジェクトになります。PDF ドキュメントの場合、ドキュメントによってページ レイアウトが現在指定されていれば、この値は PDFPageLayout オブジェクトになります。HTML ドキュメントの場合、この値は常に [] になります。

属性:

SetAccess
private
Transient
true
NonCopyable
true

既存の出力ファイルを上書きするかどうか。true または false として指定します。既存の出力ファイルを同じ名前で上書きするには、このプロパティを true に設定します。このプロパティが false で、同じ名前の書き込み可能ファイルが存在する場合、このドキュメントを閉じるときにエラーが発生します。既存のファイルが読み取り専用の場合は、このプロパティの設定にかかわらず、このドキュメントを閉じるときにエラーが発生します。

属性:

NonCopyable
true

データ型: logical

HTML ヘッダーのカスタム コンテンツ。文字ベクトルまたは string スカラーとして指定します。このプロパティの値は、ドキュメント テンプレートの head セクションで指定されたコンテンツの後、このドキュメントの <head> 要素に対して追加されます。このプロパティは、ドキュメントを開く前にのみ設定します。

属性:

NonCopyable
true

データ型: char | string

このドキュメントが開かれているかどうかのステータス。'unopened''open'、または 'closed' として指定します。

属性:

SetAccess
private
Transient
true
NonCopyable
true

データ型: char | string

出力ファイルまたはフォルダーのパス。文字ベクトルまたは string スカラーとして指定します。既定値は、現在のフォルダー内の untitled という名前のファイルまたはフォルダーへのパスです。パスは、"C:/myreports/reportA.docx" のように、絶対パスで指定できます。また、"reportA" のように、現在の MATLAB フォルダーからの相対パスで指定することもできます。ファイル拡張子を指定しない場合、DOM はドキュメントの Type プロパティに基づいて拡張子を追加します。このプロパティは、ドキュメントを開く前にのみ設定できます。

OutputPath がファイルとフォルダーのどちらのパスを指定するかは、以下の表に示すように、PackageType プロパティの値によって決まります。

PackageTypeOutputPath の値
"zipped" または "single-file"zip ファイルまたは単一のファイルのパスと名前
"unzipped"未圧縮ファイルのフォルダー
"both"zip ファイルのパスと名前、および未圧縮ファイルのフォルダー

メモ

MATLAB® Drive™ などのクラウド ドライブで PDF レポートを生成すると、レポート生成ソフトウェアとクラウド ドライブ同期ソフトウェアとの間でファイルの競合が発生し、エラーとなる可能性があります。このエラーを回避するには、クラウドと同期しないローカル ドライブでレポートを生成します。ローカル ドライブにレポートを生成し、そのレポートをクラウド ドライブにコピーするスクリプトを作成することを検討してください。

属性:

NonCopyable
true

データ型: char | string

生成されたファイルに使用するパッケージ化。表中のいずれか 1 つを値として指定します。

サポートされているレポート タイプ説明

"zipped"

"docx""html-multipage"、または "html"

OutputPath プロパティで指定された場所に zip ファイルとしてレポートを生成します。この zip ファイルは、ドキュメント タイプと一致する拡張子をもちます (Word 出力であれば docx、HTML 出力であれば htmtx。)たとえば、ドキュメント タイプが docx であり、OutputPaths:\docs\MyDoc であれば、その出力は s:\docs\MyDoc.docx という名前の zip ファイルにパッケージ化されます。

"unzipped"

"docx""html-multipage"、または "html"

OutputPath プロパティのファイル名をもつフォルダー内に、個別のファイルとしてレポートを生成します。たとえば、OutputPaths:\docs\MyDoc であれば、出力フォルダーは s:\docs\MyDoc となります。

"both"

"docx""html-multipage"、または "html"

圧縮した出力と未圧縮の出力を生成します。

"single-file"

"pdf" または "html-file"

レポートを単一のファイルとして生成します。

ヒント

Type プロパティが "html" または "html-multipage" の場合、解凍せずに開くことができる HTML レポートを生成するには、PackageType"unzipped" または "both" に設定します。生成されたファイルがあるフォルダーで root.html ファイルを開きます。

属性:

NonCopyable
true

データ型: char | string

テンプレートのスタイルシートを表すタイプ mlreportgen.dom.TemplateStylesheet のオブジェクト。スタイルシートには、段落、リスト、テーブルなどのレポート要素の書式設定に使用できるスタイル定義が含まれています。スタイルは、メインのテンプレート本体、ドキュメント パーツ テンプレート、またはこのテンプレート オブジェクトから生成されたテンプレートを使用する他のドキュメントで使用できます。open メソッドを使用してこの Template を開くと、スタイルシート オブジェクトが作成され、この Template の基となっているテンプレートに存在するスタイルが自動的に設定されます。Stylesheet プロパティを使用し、既存のスタイルにアクセスして変更し、新しいスタイルを追加します。Template オブジェクトが閉じられると、スタイルは出力テンプレート パッケージ (HTML、PDF、DOCX) またはテンプレート ドキュメント (HTML ファイル) に書き込まれます。

属性:

SetAccess
private
NonCopyable
true

テンプレート オブジェクトで使用するドキュメント パーツ。テンプレートに含める mlreportgen.dom.TemplateDocumentPart オブジェクトの配列として指定します。Template オブジェクトを閉じると、Report Generator はそれらのドキュメント パーツ テンプレートを出力テンプレート パッケージ (HTML、PDF、DOCX) またはテンプレート ドキュメント (HTML ファイル) に書き込みます。Template オブジェクトが使用しているテンプレート ドキュメントにドキュメント パーツが含まれている場合、Report Generator は、Template オブジェクトが開かれたときに、既存のドキュメント パーツの DOM 表現を含む TemplateDocumentPart オブジェクトをこのプロパティに自動的に取り込みます。

使用するテンプレートの絶対パス (必要に応じてファイル拡張子を含めることができる)。文字ベクトルまたは string スカラーとして指定します。ファイル拡張子は、次のいずれかの値になります。

拡張子ファイル タイプ
.htmtx

圧縮 HTML

.dotx

Microsoft Word

.htmt

単一ファイルの HTML

.pdfx

PDF

メモ

ドキュメントを出力用に開いた後、このプロパティを変更することはできません。

属性:

NonCopyable
true

データ型: char | string

HTML ブラウザーのタイトル バーのテキスト。文字ベクトルまたは string スカラーとして指定します。HTML ドキュメントの場合、このプロパティは、このドキュメントを表示するのに使用されるブラウザーのタイトル バーに表示されるテキストを指定します。Word ドキュメントと PDF ドキュメントの場合、このプロパティは無視されます。

このプロパティは、ドキュメントを開く前に設定します。

属性:

NonCopyable
true

データ型: char | string

出力ファイル タイプ。次の値のいずれかとして指定します。

ファイル タイプ
"docx"

Microsoft Word

"html"

HTML ドキュメントのテキスト、イメージ、スタイル シート、および JavaScript® ファイルを含む圧縮または未圧縮のフォルダーとしての HTML 出力

"html-file"

レポート用にテキスト、スタイル シート、JavaScript、およびイメージを含む単一のファイルで構成される HTML 出力

"html-multipage" (R2024a 以降)

複数のページに分割された HTML ドキュメントのテキスト、イメージ、スタイル シート、および JavaScript ファイルを含む圧縮または未圧縮のフォルダーとしての HTML 出力

"pdf"

PDF

TemplatePath プロパティを使用してテンプレートを指定する場合、テンプレートは Type プロパティと一致するものでなければなりません。

属性:

NonCopyable
true

データ型: char | string

mlreportgen.dom.Template オブジェクトの子。ドキュメント要素オブジェクトの配列として指定します。このプロパティには、append メソッドを使用して追加されたドキュメント要素オブジェクトが含まれます。

属性:

SetAccess
private
NonCopyable
true

mlreportgen.dom.Template オブジェクトのタグ。文字ベクトルまたは string スカラーとして指定します。DOM API は、このオブジェクトを作成するときに、セッション固有タグを生成します。生成されるタグの形式は CLASS:ID という形式です。ここで、CLASS はオブジェクト クラスです。ID はオブジェクトの Id プロパティの値です。独自のタグ値を指定すると、ドキュメント生成中に問題が発生したときにどこを確認すればよいかを特定しやすくなります。

属性:

NonCopyable
true

データ型: char | string

mlreportgen.dom.Template オブジェクトのオブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。DOM API は、ドキュメント要素オブジェクトの作成時にセッション固有識別子を生成します。Id には独自の値を指定できます。

属性:

NonCopyable
true

データ型: char | string

メソッド

すべて展開する

すべて折りたたむ

この例では、タイトルのホールと作成者のホールをもつテンプレートを作成します。変数 type の値を変更して、他のタイプのテンプレートを作成できます。

テンプレートの作成

mlreportgen.dom 名前空間をインポートして、オブジェクトのコンストラクターとメソッドを呼び出すときに完全修飾名を含める必要がないようにします。

import mlreportgen.dom.*;

テンプレートのタイプを指定して、テンプレート オブジェクトを作成します。

type = "docx";
t = Template("mytemplate",type);

テンプレートにタイトル ホールを追加し、スタイル Title を適用します。

hole = append(t,TemplateHole("TITLE"));
hole.Description = ("Title Description");
hole.DefaultHoleStyleName = "Title";

定型文テキストを含む段落を追加し、書式 Subtitle を適用します。

p = Paragraph("Author: ");
p.StyleName = "Subtitle";

段落を配置し、テキスト内の空白を維持します。

p.Style = {OuterMargin("0","0","1in","1in")};
p.WhiteSpace = "preserve";

段落にインライン ホールを追加します。

hole = append(p,TemplateHole("AUTHOR"));
append(t,p);

作成したテンプレート オブジェクトを閉じます。

close(t);

テンプレートのホールを埋める

テンプレート mytemplate を使用するドキュメント TitleAuthor を作成します。

rpt = Document("TitleAuthor",type,"mytemplate");
open(rpt);

ホールを循環するループを作成します。

各ホールにコンテンツを追加します。

while(~strcmp(rpt.CurrentHoleId,"#end#"))
    switch(rpt.CurrentHoleId)
        case "TITLE"
            append(rpt,Paragraph("This Is My Title"));
        case "AUTHOR"
            append(rpt,"My Name");
    end
    
    moveToNextHole(rpt);
end

レポートを生成して表示します。

close(rpt);
rptview(rpt.OutputPath)

バージョン履歴

R2014b で導入