更新记录
1.0.0(2025-12-27) 下载此版本
renderjs实现app端导出excel
平台兼容性
uni-app(3.6.15)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | √ | - | √ | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - |
文档说明
本文详细介绍在 UniApp 项目中,使用 lu-export-excel 插件(基于 ExcelJS 封装)实现 Excel 文件导出,并深度自定义表头样式的方法,包含核心参数、样式配置、完整代码示例、注意事项及常见问题解决。
功能列表
- 安卓端已测试,iOS请自行测试
- 实现导出 Excel,支持自定义文件名称、样式、表头等
- 操作简单,只需引入插件并传入数据即可
目录
一、安装依赖
本插件需要依赖 xlsx-js-style 库来实现 Excel 文件的导出和样式定制,安装命令如下:
# 使用 pnpm 安装依赖
pnpm add xlsx-js-style
# 或者使用 npm 安装依赖
npm install xlsx-js-style
# 或者使用 yarn 安装依赖
yarn add xlsx-js-style
二、核心参数说明
导出 Excel 时可配置的核心参数如下(均含默认值,按需覆盖即可):
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
fileName |
String |
"excel" | 基础文件名,最终文件名默认拼接时间戳(格式:_YYYYMMDD_HHMMSS) |
sheetName |
String |
"Sheet1" | Excel 工作表名称 |
hideNameTime |
Boolean |
false |
是否隐藏文件名后的时间戳;隐藏后重名文件会被直接覆盖 |
hideHeader |
Boolean |
false |
是否隐藏表头行(隐藏后仅显示数据行) |
headerList |
Array<String> |
[] |
自定义表头文本;若为空且 list 非空,则自动取 Object.keys(list[0]) 作为表头 |
headerStyle |
Object \| null |
见默认样式 | 表头单元格样式(严格遵循 ExcelJS 格式规范) |
list |
Array<Object> |
[] |
导出的核心数据行,数组内为键值对对象格式 |
三、导出结果处理方法
| 方法名 | 类型 | 说明 |
|---|---|---|
handleExportExcel |
Function |
Excel 导出结果的回调函数,用于接收导出成功或失败的信息 |
handleExportExcel 方法参数
| 参数 | 类型 | 说明 |
|---|---|---|
res |
Object |
导出结果对象 |
res.success |
Boolean |
导出是否成功,true 表示成功,false 表示失败 |
res.message |
String |
导出结果的描述信息,如 "导出成功" 或 "导出失败" |
res.filePath |
String |
导出文件的本地路径(仅导出成功时有值) |
res.fileName |
String |
导出文件的名称(仅导出成功时有值) |
res.data |
Any |
导出失败时的错误信息(仅导出失败时有值) |
四、表头样式(headerStyle)配置详解
headerStyle 用于自定义表头单元格的视觉样式,支持字体、背景、对齐、边框等维度配置,以下是完整说明:
3.1 默认样式(未传/传 null 时启用)
若未配置 headerStyle 或传 null,插件会使用以下美观的默认样式:
{
font: {
bold: true, // 文字加粗
italic: false, // 禁用斜体
sz: 11, // 字号(Excel 原生默认 11 号)
name: 'Calibri', // 默认字体
strike: false, // 无删除线
underline: false, // 无下划线
color: { rgb: 'FFFFFF' } // 文字颜色(白色)
},
fill: {
fgColor: { rgb: '4472C4' } // 背景色(Office 主题蓝)
},
alignment: {
horizontal: 'center', // 水平居中
vertical: 'middle' // 垂直居中(ExcelJS 固定值为 middle,非 center)
},
border: {
top: { style: 'thin', color: { rgb: '000000' } },
bottom: { style: 'thin', color: { rgb: '000000' } },
left: { style: 'thin', color: { rgb: '000000' } },
right: { style: 'thin', color: { rgb: '000000' } }
}
}
3.2 样式属性完整说明
| 一级属性 | 二级属性 | 合法取值 RGB 简写无效/说明 |
|---|---|---|
font |
bold |
布尔值,true=加粗,false=不加粗 |
font |
italic |
布尔值,true=斜体,false=正常 |
font |
sz |
数字,字号(如 12、14,建议 8-72) |
font |
name |
字符串,字体名称(如 华文琥珀、微软雅黑、Calibri) |
font |
strike |
布尔值,true=显示删除线,false=隐藏 |
font |
underline |
布尔值,true=显示下划线,false=隐藏 |
font |
color.rgb |
字符串,文字颜色(无 # 号,如 ffffff=白色、000000=黑色) |
fill |
fgColor.rgb |
字符串,背景色(无 # 号,如 4CAF50=绿色、FF9800=橙色) |
alignment |
horizontal |
字符串,水平对齐:left/center/right |
alignment |
vertical |
字符串,垂直对齐:top/middle/bottom(仅支持这三个值) |
border |
top/bottom/left/right |
边框配置:style(边框样式)+ color.rgb(边框颜色) |
边框样式(style)可选值
| 取值 | 说明 |
|---|---|
thin |
细实线(默认) |
medium |
中粗实线 |
thick |
粗实线 |
dashed |
细虚线 |
dotted |
点线 |
double |
双实线 |
dashDot |
点划线 |
hair |
极细实线 |
slantDashDot |
斜点划线 |
五、完整代码示例
以下是 UniApp 页面中实现 Excel 导出的完整可运行代码,包含测试数据生成、样式自定义、导出触发等逻辑:
<template>
<view class="content">
<button :prop="excelData" :change:prop="exportExcel.updateData" id="test" @click="exportExcel.startExport" class="btn_cube">app端导出Excel</button>
</view>
</template>
<script>
export default {
data() {
return {
excelData: {
fileName: 'excel', // 导出保存的文件名称
sheetName: 'sheet1', // sheet名称
//是否隐藏生成的文件名称时间,默认false 不隐藏(表格_20251226_230503.xlsx),重名文件会覆盖,可设置为true,自定义文件名
hideNameTime: false,
hideHeader: false, // 隐藏表头
headerList: ['姓名', '年龄', '出生日期', '随机', '备注'], // 不传title,默认使用list的key作为表头
// 注意:颜色相关的参数不能带#,否则设置不生效
headerStyle: {
font: {
bold: true, //加粗
italic: true, //斜体
sz: 12, //文字大小 默认11
name: '华文琥珀', // 字体 默认Calibri
strike: true, //删除线
underline: true, //下划线
color: {
rgb: 'ffffff'
}
},
fill: {
fgColor: {
rgb: '4CAF50'
}
},
alignment: {
horizontal: 'center', // 水平样式 "left" or "center" or "right"
vertical: 'center' //垂直样式 "top" or "center" or "bottom"
}
// style: thin:细实线(默认)medium:中粗实线 thick 粗实线 dashed 细虚线 dotted 点线 double 双实线 dashDotDot
// dashDot
// dashed
// dotted
// hair
// mediumDashDotDot
// mediumDashDot
// mediumDashed
// medium
// slantDashDot
// thick
// thin
// border: {
// top: {
// style: 'thin',
// color: {
// rgb: '9417ed'
// }
// },
// bottom: {
// style: 'thin',
// color: {
// rgb: '9417ed'
// }
// },
// left: {
// style: 'thin',
// color: {
// rgb: '9417ed'
// }
// },
// right: {
// style: 'thin',
// color: {
// rgb: '#9417ed'
// }
// }
// }
},
list: []
}
};
},
onLoad() {
// 生成list数据
this.excelData.list = new Array(1000).fill().map((_, i) => {
return {
name: `用户${i}`,
age: Math.floor(Math.random() * 30) + 20,
birthday: `user${i}@example.com`,
rod: `2025-01-01 23:22:44`,
remark: Date.now() + Math.random().toString(36)
};
});
},
methods: {
// 导出结果方法
handleExportExcel(res) {
console.log(res);
uni.showModal({
title: res.message,
content: res.filePath
});
}
}
};
</script>
<!-- 引入Excel导出插件(renderjs模块,UniApp APP端专用) -->
<script module="exportExcel" lang="renderjs" src="../../uni_modules/lu-export-excel/js_sdk/index.js"></script>
<style></style>
六、关键注意事项
- 颜色格式规范:所有
rgb取值禁止带 # 号(如ffffff而非#ffffff),否则样式配置不生效;

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 357
赞赏 1
下载 12649070
赞赏 1831
赞赏
京公网安备:11010802035340号