模板中的列表 - 项目符号和编号
列表是组织和呈现文档信息的基本结构。 PDF4me的模板引擎支持生成项目符号列表和编号列表,使您能够创建结构良好、易于阅读的文档,其中包含来自数据源的动态内容。
要点列表
通过在项目符号格式的段落中放置 foreach 循环来生成项目符号列表。 Word 模板。
基本项目符号列表语法
创建一个带项目符号的段落 Word然后添加 foreach 循环:
<<foreach [bullet in EmployeeNames]>><<[bullet.listFirstName]>> <<[bullet.listLastName]>>
<</foreach>>
关键步骤:
- 在 Word创建项目符号(使用项目符号格式)
- 添加 foreach 循环和合并字段
- 循环将对每个项目重复执行该要点。
示例:员工姓名列表
模板设计:
Employee Directory:
• <<foreach [bullet in EmployeeNames]>><<[bullet.listFirstName]>> <<[bullet.listLastName]>>
<</foreach>>
数据来源:
{
"companyName": "PDF4me",
"EmployeeNames": [
{
"listFirstName": "Thomas",
"listLastName": "Baskin"
},
{
"listFirstName": "Jacob",
"listLastName": "Gregory"
},
{
"listFirstName": "John",
"listLastName": "Doe"
}
]
}
生成的输出:
Employee Directory:
• Thomas Baskin
• Jacob Gregory
• John Doe
编号列表
使用相同的 foreach 方法生成编号列表,但段落格式要采用编号格式。 Word。
编号列表语法
Numbered List - Instead of bullets, if you apply the syntax in a numbered paragraph format in Word, the list will be generated as a numbered list with automatic numbering.
示例:任务清单
模板:
Project Tasks:
1. <<foreach [task in tasks]>><<[task.name]>> - <<[task.status]>>
<</foreach>>
数据:
{
"tasks": [
{ "name": "Design mockups", "status": "Complete" },
{ "name": "Develop features", "status": "In Progress" },
{ "name": "Testing phase", "status": "Pending" }
]
}
输出:
Project Tasks:
1. Design mockups - Complete
2. Develop features - In Progress
3. Testing phase - Pending
多级列表
使用嵌套的 foreach 循环创建具有父子关系的层次列表结构。
两级层级结构示例
模板设计:
<<foreach [manager in employees]>>Manager: <<[manager.listFirstName]>> <<[manager.listLastName]>>
<<foreach [associate in manager.associates]>>Associate: <<[associate.name]>>
<</foreach>><</foreach>>
重要的: 二级列表项应该缩进。 Word 用于创建正确层级格式的模板。
例如:组织结构
数据结构:
{
"companyName": "PDF4me",
"employees": [
{
"listFirstName": "Christopher",
"listLastName": "Nolan",
"associates": [
{ "name": "Will Smith" },
{ "name": "Barry Allen" },
{ "name": "Oliver Queen" }
]
},
{
"listFirstName": "Sarah",
"listLastName": "Parker",
"associates": []
},
{
"listFirstName": "Justin",
"listLastName": "Langer",
"associates": [
{ "name": "Brad Pitt" },
{ "name": "John Smith" }
]
}
]
}
生成的输出:
• Manager: Christopher Nolan
○ Associate: Will Smith
○ Associate: Barry Allen
○ Associate: Oliver Queen
• Manager: Sarah Parker
• Manager: Justin Langer
○ Associate: Brad Pitt
○ Associate: John Smith
处理空子列表
使用条件检查来处理子列表可能为空的情况。
条件子列表
模板:
<<foreach [manager in employees]>>Manager: <<[manager.listFirstName]>> <<[manager.listLastName]>>
<<if [manager.associates.Any()]>>
<<foreach [associate in manager.associates]>>Associate: <<[associate.name]>>
<</foreach>>
<<else>>
No associates assigned
<</if>>
<</foreach>>
格式化列表项
对列表项内容应用格式,以增强展示效果。
示例:格式化的姓名和日期
模板:
• <<foreach [employee in employees]>><<[employee.name]:caps>> - Joined: <<[employee.joinDate]:"MMMM yyyy"]>>
<</foreach>>
数据:
{
"employees": [
{ "name": "john smith", "joinDate": "2020/03/15" },
{ "name": "jane doe", "joinDate": "2021/07/22" }
]
}
输出:
• John Smith - Joined: March 2020
• Jane Doe - Joined: July 2021
已排序列表
使用枚举方法按特定顺序生成列表。
按字母顺序排列的列表
模板:
• <<foreach [person in people.OrderBy(p => p.lastName)]>><<[person.lastName]>>, <<[person.firstName]>>
<</foreach>>
按多个属性排序
模板:
• <<foreach [emp in employees.OrderBy(e => e.department).ThenBy(e => e.name)]>><<[emp.name]>> - <<[emp.department]>>
<</foreach>>
筛选列表
仅显示符合特定条件的商品。
条件过滤
模板:
Active Employees:
• <<foreach [emp in employees.Where(e => e.status == "Active")]>><<[emp.name]>>
<</foreach>>
基于年龄的过滤
模板:
Senior Team Members:
• <<foreach [person in team.Where(p => p.age > 50)]>><<[person.name]>> (Age: <<[person.age]>>)
<</foreach>>
混合列表类型
在同一文档中组合使用不同的列表样式。
示例:项目概述
模板:
Project Phases (Numbered):
1. <<foreach [phase in phases]>><<[phase.name]>>
<</foreach>>
Team Members (Bulleted):
• <<foreach [member in team]>><<[member.name]>> - <<[member.role]>>
<</foreach>>
复杂多层示例
三级层级结构
模板:
<<foreach [dept in departments]>>Department: <<[dept.name]>>
<<foreach [team in dept.teams]>>Team: <<[team.name]>>
<<foreach [member in team.members]>><<[member.name]>> - <<[member.position]>>
<</foreach>>
<</foreach>>
<</foreach>>
这将产生:
- 一级:部门(要点式 1)
- 级别 2:团队(要点式 2)
- 级别 3:成员(要点式 3)
- 级别 2:团队(要点式 2)
列表设计 Word 模板
设置列表格式
- 创建列表结构 - 使用 Word内置列表格式化工具
- 选择项目符号样式 - 选择合适的项目符号或编号样式
- 设置缩进 - 配置多级列表的缩进级别
- 添加合并字段 - 插入 foreach 循环和合并字段语法
- 保持格式 - 确保模板文本应用列表格式
缩进级别
对于多级列表:
- 一级: 无缩进或一级缩进
- 二级: 增加一个制表符或缩进
- 3级: 两个制表符或二级缩进
Word 根据缩进级别自动处理项目符号/编号样式。
实际应用
用例 1:会议议程
模板:
Meeting Agenda - <<[meetingDate]:"MMMM dd, yyyy">>
1. <<foreach [item in agendaItems]>><<[item.title]>> (<<[item.duration]>> min)
<</foreach>>
Attendees:
• <<foreach [attendee in attendees]>><<[attendee.name]>> - <<[attendee.department]>>
<</foreach>>
用例 2:产品特性
模板:
<<[productName]>> Features:
• <<foreach [feature in features]>><<[feature.name]>> - <<[feature.description]>>
<</foreach>>
Technical Specifications:
1. <<foreach [spec in specifications]>><<[spec.parameter]>>: <<[spec.value]>>
<</foreach>>
用例 3:发票项目
模板:
Order Items:
<<foreach [item in orderItems]>>
<<[$index + 1]>>. <<[item.name]>> - Quantity: <<[item.qty]>> - Price: $<<[item.price]>>
<</foreach>>
Total Items: <<[orderItems.Count()]>>
Total Amount: $<<[orderItems.Sum(i => i.qty * i.price)]>>
最佳实践
列表设计
- 统一的格式 - 对相似的内容类型使用相同的列表样式
- 合适的深度 - 为了提高可读性,将嵌套层级限制在 3-4 层。
- 逻辑分组 将相关项目归类在一起
- 清晰的层级结构 - 对不同级别使用不同的项目符号样式
数据结构
- 清洁收藏 确保数据集包含有效、完整的数据。
- 一致性属性 - 在所有项目中使用一致的属性名称
- 处理空值 - 检查集合是否为空
Any() - 正确排序 - 预先对数据进行排序,或在模板中使用 OrderBy 函数
表现
- 限制列表大小 - 对于非常长的列表,请考虑分页。
- 高效过滤 - 尽可能在数据源应用筛选器
- 避免复杂的嵌套 深度嵌套会影响处理速度
:::提示:列表格式设置
直接在列表中应用列表格式(项目符号、编号、缩进)。 Word 在添加 foreach 循环之前,请先设置模板格式。模板引擎会保留您在模板中设置的格式。 Word.
:::