介绍
在Web开发中,常常需要将数据以Excel的形式导出,以方便用户进行离线数据处理。而JavaScript可以很方便地实现这个功能。本文将演示如何使用JavaScript实现Excel导出,并附带样式。
实现方法
准备工作
首先,我们需要在页面中引入两个库:SheetJS和jszip。SheetJS是用于处理Excel文件的库,而jszip是用于压缩文件的库。我们可以通过CDN引入这两个库,也可以下载到本地并引入。
<script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jszip/dist/jszip.min.js"></script>
导出数据
首先,我们需要定义一个函数,用于接收数据并导出Excel文件。这个函数包含以下几个步骤:
- 创建一个工作簿(Workbook)对象。
- 创建一个工作表(Worksheet)对象,并将数据添加到工作表中。
- 将工作表添加到工作簿中。
- 将工作簿转化为二进制数据(Blob)。
- 创建一个文件名,例如
export.xlsx
。 - 使用FileSaver.js库将二进制数据保存为Excel文件。
function exportToExcel(data) {
// 创建工作簿对象
var workbook = XLSX.utils.book_new();
// 创建工作表对象
var worksheet = XLSX.utils.json_to_sheet(data);
// 将工作表添加到工作簿中
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
// 将工作簿转化为二进制数据
var excelData = XLSX.write(workbook, {bookType:'xlsx', type:'array'});
// 创建文件名
var fileName = "export.xlsx";
// 保存文件
saveAs(new Blob([excelData], {type: "application/octet-stream"}), fileName);
}
导出样式
除了导出数据外,有时候我们还需要为导出的Excel文件添加样式,以提升用户体验。下面是一个添加样式的示例:
function exportToExcelWithStyle(data) {
// 创建工作簿对象
var workbook = XLSX.utils.book_new();
// 创建工作表对象
var worksheet = XLSX.utils.json_to_sheet(data);
// 设置列宽
worksheet["!cols"] = [{wch: 10}, {wch: 20}, {wch: 30}];
// 设置行高
var headerRow = XLSX.utils.decode_range(worksheet["!ref"]).s.r;
worksheet["!rows"] = [{hpx: 20}, {hpx: 30}, {hpx: 40}];
// 设置表格样式
var style = {
font: {bold: true, color: {rgb: "FFFFFFFF"}},
fill: {fgColor: {rgb: "FF000000"}},
alignment: {horizontal: "center"},
border: {
top: {style: "thin", color: {rgb: "FF000000"}},
bottom: {style: "thin", color: {rgb: "FF000000"}},
left: {style: "thin", color: {rgb: "FF000000"}},
right: {style: "thin", color: {rgb: "FF000000"}}
}
};
var headerRange = XLSX.utils.decode_range(worksheet["!ref"]);
for (var col = headerRange.s.c; col <= headerRange.e.c; col++) {
var cell = XLSX.utils.encode_cell({r: headerRow, c: col});
worksheet[cell].s = style;
}
// 将工作表添加到工作簿中
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
// 将工作簿转化为二进制数据
var excelData = XLSX.write(workbook, {bookType:'xlsx', type:'array'});
// 创建文件名
var fileName = "export_with_style.xlsx";
// 保存文件
saveAs(new Blob([excelData], {type: "application/octet-stream"}), fileName);
}
总结
通过上述的示例代码,我们可以很方便地使用JavaScript实现Excel导出,并附带样式。这样就可以让用户在离线环境中对数据进行更方便的处理了。希望本文对您有所帮助!
本文来自极简博客,作者:黑暗征服者,转载请注明原文链接:JS实现Excel导出并附带样式Demo:保姆级