メインコンテンツへスキップ

テンプレート内のテーブル - 動的テーブルガイド

表は専門的な文書の基本的な構成要素であり、データを構造的に提示することで、比較、参照、分析を容易にします。 PDF4meのドキュメント生成エンジンは、ソースからのデータで構成された動的なテーブルを効率的に作成します。


複数列テーブル構造​

テーブルセル内にマージフィールドを定義することで、複数の列を持つテーブルを生成します。各行はデータ収集に基づいて繰り返されます。

基本的なテーブル構文​

テーブル構造を作成します Word 以下のパターンを持つテンプレート:

Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>

テンプレート構造:

  1. テーブルを作成する Word 希望する列数
  2. 最初のセルにforeachループを配置する
  3. 同じ行の連続するセルに差し込みフィールドを追加する
  4. 最後のセルでforeachループを閉じます

例:製品在庫表​

データソース(JSON):

{
"vendorName": "Instamart",
"products": [
{
"productName": "Laptops",
"price": 160000,
"manufactured": "25/07/2022"
},
{
"productName": "Keyboard",
"price": 10000,
"manufactured": "12/04/2022"
},
{
"productName": "Speakers",
"price": 25000,
"manufactured": "08/05/2022"
}
]
}

生成された出力:

製品名製造価格
ノートパソコン2022年7月25日160000
キーボード2022年4月12日10000
講演者2022年5月8日25000

表の計算と合計​

列挙法を使用して、テーブル構造内の合計、平均、件数などの集計値を計算します。

合計計算​

数値列の合計を計算するために、合計行を追加します。

Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>
Column 1: Total
Column 2:
Column 3: $<<[products.Sum(c => c.price)]>>

生成された出力:

製品名製造価格
ノートパソコン2022年7月25日160000
キーボード2022年4月12日10000
講演者2022年5月8日25000
合計195,000ドル

その他の集計関数​

平均:

Average Price: $<<[products.Average(p => p.price)]:"F2">>

カウント:

Total Products: <<[products.Count()]>>

最大:

Highest Price: $<<[products.Max(p => p.price)]>>

最小:

Lowest Price: $<<[products.Min(p => p.price)]>>

単一列の表​

1行に複数の情報行を含む単一列のテーブルを生成します。 -greedy 各コレクション項目が1行を占めるように切り替えます。

単一列テンプレート構文​

<<foreach [product in products]>>Product: <<[product.productName]>>, Manufactured On: <<[product.manufactured]:"yyyy.MM.dd">>, Product Price: $<<[product.price]>><</foreach -greedy>>

重要なポイント: の -greedy switch文はコンテンツブロック全体を1行として扱い、不要な行の区切りを防ぎます。

生成された出力:

商品詳細
製品:ノートパソコン、製造日:2022年7月25日、製品価格:160,000ドル
製品:キーボード、製造日:2022年4月12日、製品価格:10,000ドル
製品:スピーカー、製造日:2022年5月8日、製品価格:25,000ドル

高度なテーブルの例​

例1:請求書明細項目表​

テンプレート:

Item | Description | Qty | Unit Price | Total
<<foreach [item in lineItems]>><<[item.code]>> | <<[item.description]>> | <<[item.quantity]>> | $<<[item.unitPrice]:"F2">> | $<<[item.quantity * item.unitPrice]:"F2">><</foreach>>
| | | Subtotal: | $<<[lineItems.Sum(i => i.quantity * i.unitPrice)]:"F2">>

例2:従業員名簿表​

テンプレート:

Name | Department | Email | Phone
<<foreach [emp in employees.OrderBy(e => e.lastName)]>><<[emp.firstName]>> <<[emp.lastName]>> | <<[emp.department]>> | <<[emp.email]>> | <<[emp.phone]>><</foreach>>
Total Employees: <<[employees.Count()]>>

例3:売上レポート表​

テンプレート:

Month | Revenue | Expenses | Profit
<<foreach [month in salesData]>><<[month.name]>> | $<<[month.revenue]:"F2">> | $<<[month.expenses]:"F2">> | $<<[month.revenue - month.expenses]:"F2">><</foreach>>
Annual Total | $<<[salesData.Sum(m => m.revenue)]:"F2">> | $<<[salesData.Sum(m => m.expenses)]:"F2">> | $<<[salesData.Sum(m => m.revenue - m.expenses)]:"F2">>

条件付きテーブル行​

データプロパティまたはビジネスロジックに基づいて、条件付きでテーブル行を生成します。

フィルタリングされた行​

テンプレート:

Product | Stock Status
<<foreach [product in products.Where(p => p.inStock == true)]>>
<<[product.name]>> | Available
<</foreach>>

条件付き書式設定​

テンプレート:

Employee | Status
<<foreach [emp in employees]>>
<<[emp.name]>> | <<if [emp.active]>>Active<<else>>Inactive<</if>>
<</foreach>>

表の書式設定に関するベストプラクティス​

デザインガイドライン​

  1. ヘッダー行 - 明確で分かりやすい列ヘッダーを作成する
  2. 一貫したアライメント 数値データは右揃え、テキストデータは左揃えにする。
  3. 適切な幅 - 想定されるコンテンツに基づいて列幅を設定します
  4. 書式設定 - 書式設定(枠線、網掛け)を適用する Word テンプレート
  5. 合計順位 集計計算は適切な集計行に配置してください。

データ準備​

  1. クリーンなデータ テンプレート処理の前に、データが適切にフォーマットされていることを確認してください。
  2. null値を処理する - nullフィールドにデフォルト値を提供する
  3. 行数を制限する 非常に大規模なデータセットの場合は、ページネーションを検討してください。
  4. データを並べ替える - データを事前に並べ替えるか、テンプレートで OrderBy を使用する

複雑なテーブル構造​

多段階グループ分け​

テンプレート:

Category | Product | Price
<<foreach [cat in categories]>>
<<[cat.name]>> | |
<<foreach [prod in cat.products]>>
| <<[prod.name]>> | $<<[prod.price]>>
<</foreach>>
| Category Total | $<<[cat.products.Sum(p => p.price)]>>
<</foreach>>

条件付きセクションを含む表​

テンプレート:

Item | Quantity | Price | Discount | Total
<<foreach [item in orderItems]>>
<<[item.name]>> | <<[item.qty]>> | $<<[item.price]>> | <<if [item.discount > 0]>><<[item.discount]>>%<<else>>-<</if>> | $<<[item.total]>>
<</foreach>>

特別なテーブル機能​

貪欲なスイッチの使用​

の -greedy スイッチは、テーブルセル全体にコンテンツをどのように分配するかを制御します。

-greedy なし: 各プロパティは新しい行を作成できます。 -greedy を使用する場合: コンテンツブロック全体が1行に収まります

例:

<<foreach [item in items]>>
<<[item.prop1]>>, <<[item.prop2]>>, <<[item.prop3]>>
<</foreach -greedy>>

垂直統合​

複数の行にまたがるセルについては、セル結合を設定します。 Word マージフィールドを追加する前のテンプレート。


テーブル生成のトラブルシューティング​

よくある問題とその解決策​

問題: テーブルの行が正しく繰り返されない
解決: foreachループが行内のすべてのセルにまたがるようにしてください。

問題: 不要な余分な行
解決: 使用 -greedy 単一行コンテンツ用のスイッチ

問題: 計算間違い
解決: 式の構文とデータ型を確認する

問題: 生成後に書式が失われました
解決: テンプレートセルに書式設定を適用する(マージフィールド構文だけでなく)

問題: データが存在するのにテーブルが空になる
解決: プロパティ名がデータソースと完全に一致することを確認してください。


完全な例:売上請求書​

テンプレート:

Invoice Date: <<[invoiceDate]:"MMMM dd, yyyy">>
Customer: <<[customerName]:caps>>

Item No. | Description | Qty | Unit Price | Amount
<<foreach [item in lineItems]>>
<<[item.itemNo]>> | <<[item.description]>> | <<[item.quantity]>> | $<<[item.unitPrice]:"F2">> | $<<[item.quantity * item.unitPrice]:"F2">>
<</foreach>>
| | | Subtotal: | $<<[lineItems.Sum(i => i.quantity * i.unitPrice)]:"F2">>
| | | Tax (10%): | $<<[lineItems.Sum(i => i.quantity * i.unitPrice) * 0.10]:"F2">>
| | | **Total:** | **$<<[lineItems.Sum(i => i.quantity * i.unitPrice) * 1.10]:"F2">>**

:::ヒント テーブルデザイン テーブル構造をデザインするには Wordまず、適切な書式設定、罫線、スタイルを適用します。次に、最適な結果を得るために、設計したテーブルにマージフィールドとforeachループを追加します。 :::