业务中经常会处理各种数据,本文介绍了前端通过 xlsx 库将数据转换为 excel 文件用于上传的实现。文章来源地址https://www.toymoban.com/news/detail-539511.html
import * as XLSX from "xlsx"; // 此代码使用版本 0.18.5
interface ObjectAny {
[key: string]: any;
}
const exportExcelNoDownload = (headers: string[][], data: ObjectAny[]): File => {
const headerWs = XLSX.utils.aoa_to_sheet(headers);
const ws = XLSX.utils.sheet_add_json(headerWs, data, {skipHeader: true, origin: 'A2'});
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'sheet1');
const fileData = XLSX.write(wb, {type: 'array', compression: true}); // compression 能有效减少文件体积,便于上传
const newFile = new File([fileData], 'text.xlsx');
return newFile;
}
// 本地测试一下生成的文件是否正常
const test = () => {
const headers = [['国家', '城市']];
const data = [
{'国家': 'china', '城市': 'shenzhen'},
{'国家': 'china', '城市': 'guangzhou'},
{'国家': 'USA', '城市': 'newyork'},
];
const file = exportExcelNoDownload(headers, data);
const tmpLink = document.createElement("a");
const objectUrl = URL.createObjectURL(file);
tmpLink.href = objectUrl;
tmpLink.download = file.name;
document.body.appendChild(tmpLink);
tmpLink.click();
document.body.removeChild(tmpLink);
URL.revokeObjectURL(objectUrl);
}
文章来源:https://www.toymoban.com/news/detail-539511.html
到了这里,关于js使用xlsx生成二进制文件用于上传(不下载)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!