uni.saveFile导出excel文件
时间: 2025-06-23 11:25:31 浏览: 10
### 使用 `uni.saveFile` 方法在 UniApp 中导出 Excel 文件
为了实现通过 `uni.saveFile` 导出 Excel 文件,在前端需先生成 Excel 文件的数据流,再将其转换成 Blob 对象以便保存。以下是具体操作方式:
#### 准备工作
确保项目中已引入处理 Excel 的库,如 SheetJS (xlsx),这可以通过 npm 安装或直接放置于静态资源目录下。
```javascript
// 引入 SheetJS 库用于创建 Excel 文档
import * as XLSX from '@/static/excel.js';
```
#### 创建 Excel 数据并转化为二进制字符串
定义要写入 Excel 表格的内容结构以及对应的列头信息,并调用相应的方法来构建 Excel 工作簿对象。
```javascript
function createExcelData() {
// 构建表头映射关系
const headerName = {
goodsName: '商品名称',
date: '日期',
price: '价格',
orderNo: "订单编号"
};
// 设置文件名
const fileName = '订单数据';
// 需要导出的字段列表
const header = ['goodsName', 'price', 'date', 'orderNo'];
// 后台返回的实际业务数据
const ExcelData = [
{ date: '2022-02-02', price: '999', goodsName: '钓鱼竿', orderNo: "123456789" },
{ date: '2022-02-03', price: '888', goodsName: '路亚', orderNo: "987654321" }
];
let ws_name = "SheetJS";
/* 转换json到worksheet */
var ws = XLSX.utils.json_to_sheet(ExcelData);
/* 添加自定义标题行 */
XLSX.utils.sheet_add_aoa(ws, [[...Object.values(headerName)]], { origin: "A1" });
/* Build the Workbook */
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, ws_name);
// 将 workbook 输出为 base64 编码的 Data URL 形式的 .xlsx 文件
return XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
}
```
#### 利用 `uni.saveFile` 进行文件存储
当获取到了代表整个 Excel 文件内容的数组缓冲区之后,就可以借助 `uni.saveFile` API 来完成实际的文件保存动作了。
```javascript
async function exportToExcel() {
try {
// 获取 Excel 文件的二进制数据
const excelBuffer = createExcelData();
// 把 Buffer 转换成 ArrayBuffer 类型
const arrayBuffer = new Uint8Array(excelBuffer).buffer;
// 发起临时路径请求以供后续 saveFile 操作使用
await uni.getFileSystemManager().writeFileSync(`${Date.now()}.xlsx`, arrayBuffer, 'binary');
// 执行保存操作
const res = await uni.saveFile({
tempFilePath: `${Date.now()}.xlsx`,
success(res) {
console.log('Saved successfully:', res.savedFilePath);
// 提示用户成功消息
uni.showToast({ title: '导出成功!', icon: 'success'});
// 可选:提供给用户的下载链接或其他交互逻辑...
},
fail(err) {
console.error('Failed to save file:', err);
uni.showToast({title: '导出失败...',icon:'none'})
}
});
} catch (error) {
console.error(error.message);
uni.showToast({title: error.message || '未知错误发生...',icon:'none'})
}
}
```
上述代码片段展示了如何结合 SheetJS 和 `uni.saveFile` 实现简单的 Excel 文件导出流程[^4]。
阅读全文
相关推荐














