js/ts实现保存excel表格到计算机指定目录位置。
在JavaScript或TypeScript中,要实现将数据保存为Excel表格并下载到计算机的指定目录位置,通常需要使用前端库,如SheetJS
(也称为xlsx
)来处理Excel文件的读写,以及HTML5的Blob
和URL.createObjectURL
来创建下载链接。
以下是一个简单的实现示例:
// 引入SheetJS库
import * as XLSX from 'xlsx';
function saveAs(blob, filename) {
// 创建一个链接元素
const a = document.createElement('a');
// 利用URL.createObjectURL创建一个指向blob的URL
a.href = URL.createObjectURL(blob);
// 设置下载的文件名
a.download = filename;
// 触发下载
document.body.appendChild(a);
a.click();
// 清理临时元素和对象URL
document.body.removeChild(a);
URL.revokeObjectURL(a.href);
}
function downloadExcel(data, fileName) {
// 将数据转换为工作表
const ws = XLSX.utils.json_to_sheet(data);
// 创建工作簿并添加工作表
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 生成Excel文件的二进制字符串
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
// 创建二进制对象并创建下载链接
const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
saveAs(blob, fileName + '.xlsx');
}
// 将字符串转换为ArrayBuffer
function s2ab(s) {
const buf = new ArrayBuffer(s.length);
const view = new Uint8Array(buf);
for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
// 使用示例
const data = [
{ name: 'Alice', email: 'alice@example.com' },
{ name: 'Bob', email: 'bob@example.com' }
];
downloadExcel(data, 'users');
在上述代码中,downloadExcel
函数接受一个数据数组和一个文件名作为参数,然后使用XLSX
库将数据转换为Excel表格并下载。saveAs
函数负责创建下载链接并触发下载。
请注意,前端JavaScript代码本身无法直接将文件保存到用户的计算机指定目录中,因为出于安全考虑,浏览器限制对本地文件系统的访问。用户必须手动选择下载位置。
评论已关闭