更新记录
1.0.1(2025-08-30) 下载此版本
增加了上传到云存储的功能
1.0.0(2025-08-17) 下载此版本
1.0.1
平台兼容性
uni-app(4.72)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | × | × | × | × | × |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × | × | × |
piao-docxtemplate 插件使用说明
🎯 插件简介
piao-docxtemplate
是一个基于 docxtemplater
的 uni-app 插件,用于根据 Word 模板生成 DOCX 文档。
✅ 支持环境
- H5/Web环境 ✅
- Electron环境 ✅
- 小程序环境 ❌ (不支持)
- App环境 ❌ (不支持)
🔧 安装依赖
npm install pizzip docxtemplater
📱 使用方法
基本使用
import { exportDoc } from '@/uni_modules/piao-docxtemplate/js_sdk/index.js'
exportDoc('/static/docx/template.docx', {
name: '张三',
company: '某某律师事务所',
date: '2024-01-01'
}, '生成的文档.docx', {
onSuccess: (result) => {
console.log('文档生成成功:', result)
},
onError: (error) => {
console.error('文档生成失败:', error)
}
})
云存储上传
const uploadOptions = {
url: 'https://your-upload-api.com/upload',
name: 'file',
formData: {
type: 'document'
}
}
exportDoc('/static/docx/template.docx', data, fileName, {
uploadToCloud: true,
uploadOptions: uploadOptions,
onSuccess: (result) => {
console.log('上传成功:', result)
},
onError: (error) => {
console.error('上传失败:', error)
}
})
📋 参数说明
exportDoc(templateName, data, fileName, options)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
templateName | String | ✅ | 模板文件路径 |
data | Object | ✅ | 要填充的数据 |
fileName | String | ✅ | 生成的文件名 |
options | Object | ❌ | 可选配置 |
options 配置项
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
uploadToCloud | Boolean | false | 是否上传到云存储 |
uploadOptions | Object | null | uni.uploadFile 的上传参数 |
onProgress | Function | null | 上传进度回调(H5和App环境都支持) |
onSuccess | Function | null | 成功回调 |
onError | Function | null | 错误回调 |
🚀 功能特性
1. 文档生成
- 支持复杂的 Word 模板
- 自动填充数据
- 生成标准 DOCX 格式
2. 文件保存
- H5/Web环境: 自动下载到本地
- Electron环境: 发送到主进程保存
3. 云存储上传
- 支持任意云存储服务
- 使用
uni.uploadFile
API - 支持上传进度监听(H5和App环境)
- 自动清理临时文件
📁 文件结构
piao-docxtemplate/
├── js_sdk/
│ └── index.js # 主文件
├── components/ # 组件文件
├── package.json # 包配置
└── README.md # 说明文档
🔍 环境检测
import { exportDoc } from '@/uni_modules/piao-docxtemplate/js_sdk/index.js'
// 检测是否为Electron环境
function isElectron() {
return !!(typeof window !== 'undefined' && (window.electron || window.ipcRenderer));
}
if (isElectron()) {
console.log('当前运行在Electron环境')
} else {
console.log('当前运行在H5/Web环境')
}
⚠️ 注意事项
1. 模板文件
- 模板文件必须放在
static
目录下 - 支持相对路径和绝对路径
- 文件格式必须是
.docx
2. 数据格式
- 数据对象中的键名必须与模板中的变量名一致
- 支持嵌套对象和数组
- 支持条件判断和循环
3. 环境限制
- H5/Web环境支持上传进度监听
- 小程序和App环境不支持
- 需要现代浏览器支持(支持fetch API)
🔧 错误处理
常见错误
-
模板文件读取失败
- 检查文件路径是否正确
- 确保文件存在于static目录
-
数据渲染失败
- 检查数据格式是否正确
- 确保模板变量名与数据键名一致
-
文件保存失败
- H5环境:检查浏览器下载设置
- Electron环境:检查主进程IPC配置
错误回调示例
exportDoc(templateName, data, fileName, {
onError: (error) => {
console.error('详细错误信息:', error)
// 显示用户友好的错误提示
uni.showToast({
title: '文档生成失败',
icon: 'none'
})
}
})
📞 技术支持
如果遇到问题,请提供:
- 错误日志: 控制台的完整错误信息
- 环境信息: 运行环境(H5/Web/Electron)
- 复现步骤: 详细的操作步骤
- 模板文件: 使用的模板文件(如果可能)
🎉 总结
piao-docxtemplate
插件现在专注于 H5、Web 和 Electron 环境,代码更清晰,功能更稳定。如果您需要其他环境的支持,请考虑使用其他解决方案。