直接改cols配置里的title字段即可,Layui导出完全以title为准,与field值无关;初始化时须为每列显式设置title,漏设会导致表头为空。
导出表头名称和字段名不一致怎么办
直接改 cols 配置里的 title 字段就行。layui 导出 excel 完全以列定义中的 title 为准,和 field 值无关。比如后端返回字段是 user_name,但你想导出成“姓名”,就写 {field: 'user_name', title: '姓名'}。
常见错误现象:导出表头是 create_time、status_code 这类下划线命名,看着像数据库字段;或者英文字段直接裸奔上表头。
- 初始化表格时,每列必须显式设置
title,不能留空或依赖默认值 - 动态拼接
cols(比如从接口拉取列配置)时,确保每个对象都带title,漏掉会导致该列表头为空 - 如果某列用了
templet渲染状态码为“启用/禁用”,导出时不会自动执行它——title仍生效,但数据值还是原始码,需手动转换
想导出隐藏列或新增虚拟列怎么配表头
Layui 默认只导出 hide: false 的列,且顺序严格按 cols 数组顺序。要突破这个限制,就得临时构造一份新 cols 并传给 exportFile()。
例如:界面上没展示「创建人姓名」,但运营要求导出;或者需要加一列「导出时间」作为水印。
- 先用
layui.table.config['yourTableId'].cols[0]拿到当前列配置副本,再push一个新列对象:{field: 'export_time', title: '导出时间'} - 新列的
field可以是任意字符串,只要在导出前把对应数据塞进每行数据里(如row.export_time = new Date().toLocaleString()) - 不要直接修改原始
cols配置,否则会影响表格渲染 - Layui 2.8+ 支持传入自定义
cols和data给exportFile();老版本只能用table.exportFile('id', data, cols)形式
用 exportFile() 手动传参时表头错位或全空
调用 table.exportFile() 时不传表格 ID,改用 data + headers 组合,才能完全绕过自动列提取逻辑。这时 headers 数组长度必须和每行数据长度严格一致,否则 Excel 列数对不上。
典型错误:传了 headers: ['姓名', '邮箱'],但 data 每行是 ['张三', 'zhang@x.com', '2026-07-01'] —— 多出一列,Excel 第三列就会错位或空白。
-
data必须是二维数组(如[['张三','zhang@x.com'], ['李四','li@x.com']]),不能是对象数组(如[{username:'张三'},...]) -
headers必须和data每行字段顺序、数量完全对应,少一个或多一个都会导致错列 - 如果表格启用了分页,
table.cache['id']只含当前页数据;要导出全部,得配合后端重新拉取或用全量缓存 - 注意
table.cache是原始值,不含templet格式化结果(如状态码转文字),需自行映射
导出文件名带中文或日期后缀总失效
filename 参数必须在 table.exportFile() 调用时通过配置对象传入,且不能带扩展名。Layui 会自动加 .xlsx 或 .csv,传 "用户报表.xlsx" 会导致下载成 用户报表.xlsx.xlsx。
更麻烦的是:CSV 中文文件名在 IE/旧版 Edge 下大概率乱码,这不是前端编码问题,而是浏览器对 Content-Disposition 的 UTF-8 支持不一致。
- 推荐用
Blob + URL.createObjectURL替代默认下载,完全绕过exportFile()的参数限制 - 构造
Blob时务必加 BOM 头:'\uFEFF' + csvString,否则 Excel 打开会乱码 - 文件名可放心用中文,如
a.download = '订单汇总-20260701.csv' - 如果坚持用
exportFile(),filename只写"订单汇总-20260701",别加后缀
headers 和 data 的字段顺序必须人工对齐,Layui 不做任何校验或容错**。哪怕只是多了一个空格、少了一个引号,导出的 Excel 就可能列错位、值为空,而且没有任何报错提示。


















