js 方法 二进制流转excel并下载 乱码
时间: 2024-06-09 09:11:40 浏览: 133
将二进制流转换为 Excel 文件并下载可以使用以下代码:
```javascript
function downloadExcel(data, filename) {
// 创建一个 Blob 对象,用于存储 Excel 文件内容
const blob = new Blob([data], { type: 'application/vnd.ms-excel' });
// 创建一个链接,用于下载 Excel 文件
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
// 设置链接的下载属性,包括文件名和下载方式
link.download = filename;
link.style.display = 'none';
document.body.appendChild(link);
// 触发链接的点击事件,开始下载 Excel 文件
link.click();
// 下载完成后移除链接和 Blob 对象
document.body.removeChild(link);
window.URL.revokeObjectURL(blob);
}
// 使用 fetch 方法获取二进制流数据
fetch('http://example.com/data.xlsx')
.then(response => response.blob())
.then(blob => {
// 将二进制流转换为 ArrayBuffer
const reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.onload = () => {
const data = new Uint8Array(reader.result);
// 下载 Excel 文件
downloadExcel(data, 'data.xlsx');
};
});
```
如果你遇到乱码问题,可能是因为 Excel 文件使用了非 UTF-8 编码。你可以尝试使用 `TextDecoder` 对 ArrayBuffer 进行解码:
```javascript
const decoder = new TextDecoder('cp936'); // 使用 GBK 编码
const content = decoder.decode(data);
const blob = new Blob([content], { type: 'application/vnd.ms-excel' });
```
如果使用其他编码,请替换 `cp936` 参数。
阅读全文