<button @click="confirmExport">导出excel</button>
confirmExport() {
let header = {
"X-Access-Token": uni.getStorageSync(ACCESS_TOKEN), //自定义请求头信息
}
let url = "http"/......"; // 后端API地址
uni.request({
url: url,
method: "POST",
// method:"GET",
header: header,
responseType: "arraybuffer",
})
.then((res) => {
const now = new Date();
const fileName = now.toISOString() + ".xlsx";
const arrayBuffer = res[1].data; // utf-8编码的文件数据
const base64String = uni.arrayBufferToBase64(arrayBuffer);
const buffer = uni.base64ToArrayBuffer(base64String);
let fs = uni.getFileSystemManager();
const filePath = wx.env.USER_DATA_PATH + "/" + fileName;
fs.writeFile({
filePath: filePath,
data: buffer,
encoding: "binary",
success: (res) => {
console.log("文件保存成功");
uni.openDocument({
filePath: filePath,
fileType: 'xlsx',
showMenu: true,
success: (res) => {
console.log("文件预览成功");
// 构建分享内容
},
fail: (error) => {
console.error("文件保存失败", error);
},
});
},
});
});
},
缺陷:iOS 报错 officeImportErrorDomain错误912
解决方案:
1.点击右上角的三个点,选择“用其他应用打开”,可选择WPS打开,即可浏览
2.让后端返回xlsx格式的excel文档
原因:
iOS 不能打开 `.doc` `.xls` `.ppt` 类型的文档
微信小程序的 接口wx.openDocument 支持打开office相关文件, 但是 IOS端不支持旧版 97-2003版的格式,需要打开office文件的统一上传新版pptx, docx, xlsx格式的文件, 不要用ppt, doc, 和xls