作为开发者,你可能遇到过这些场景:
&P 写在哪里才能生效?页眉页脚看似简单,但占位符的组合规则、优先级、样式作用域,稍不注意就会踩坑。本文帮你一次性理清。
SpreadJS 的页眉页脚配置遵循 位置 → 类型 → 内容 的三层结构:
位置层:left * center * right ↓类型层:header * footer ↓内容层:文本 + 占位符基础示例:
sheet.printInfo().pageHeaderFooter({ normal: { header: { center: "第 &P 页" } }})这段代码里,normal表示在所有页面上应用这个设置;header代表页眉(对应的页脚是footer);center表示中间位置(还有left和right);最关键的是&P,它代表当前页码,我们叫它占位符------打印时会自动替换成实际的页码。
* &P * 当前页码 * 第1页打印时显示1 ** ---- * ---------- * -------------------------------------------- ** &N * 总页数 * 共10页就显示10 ** &D * 当前日期 * 2026/1/1 ** &T * 当前时间 * 15:30:26 ** &G * 图像 * 需配合leftImage/centerImage/rightImage使用 ** &F * 工作簿名称 * 等于workbook的name属性 ** &A * 工作表名称 * 当前打印的sheet名称 *
除了数据,页眉页脚的文字样式也能控制:
* &B * 加粗 ** ---------- * ------------------------------------ ** &I * 斜体 ** &20 * 20号字体(数字可自定义) ** &"宋体" * 设置字体为宋体(注意英文双引号) ** &KFF0000 * 红色(K代表颜色,后面跟RGB十六进制) ** &S * 删除线 ** &U * 下划线 *
样式占位符有个特点:前面的设置会影响后面的文字。举个例子:
&26西&"宋体"安&K0000FF葡&U萄&B城&I你&S好这段文本的效果是:
&26让后面所有文字变成26号字&"宋体"从"安"字开始应用宋体&K0000FF从"葡"字开始变成蓝色最终效果如下:

SpreadJS和Excel一样,支持三种页眉页脚模式:
要启用首页不同和奇偶页,需要先开启开关:
// 首页不同sheet.printInfo().differentFirstPage(true)// 奇偶页不同sheet.printInfo().differentOddAndEvenPages(true)这三种模式有优先级:
如果想同时设置首页、奇数页、偶数页,可以这样写:
// 先开启两个开关sheet.printInfo().differentFirstPage(true)sheet.printInfo().differentOddAndEvenPages(true)// 再分别设置sheet.printInfo().pageHeaderFooter({ first: { header: { center: "&30合同封面", // 封面页:大号字体 } }, odd: { header: { left: "工作表:&A", center: "第&P/&N页" } }, even: { header: { center: "偶数页 第&P/&N页", right: "导出日期:&D" } },})页眉页脚看着简单,但真要灵活运用起来,还是有不少细节需要注意:
&P、&N、&D这些占位符是动态内容的关键,记不住的话建议收藏备用。differentFirstPage(true)或differentOddAndEvenPages(true)。掌握这些要点后,无论是做报表导出、合同打印,还是其他需要页眉页脚的场景,你都能轻松应对了。
",智谱创始人唐杰谈 DeepSeek:很震撼,开启了“AI 做事”新范式
小米路由器ax3600和ax6000的主要区别是什么(小米路由器ax3600和ax6000的性能参数有何不同)
[Android 从零到一] Kotlin Channel 与复杂并发场景:从生产者-消费者到结构化并发治理
DeepSeek 梁文锋旗下幻方量化 2025 年收益率 56.6%,管理规模已超 700 亿元
禁用U盘如何做?企业数据防漏实用攻略
名言警句-名人名言-名人语录查询API接口说明