返回
便捷前端导出excel文件工具与示例代码
前端
2024-02-05 23:32:04
js-xlsx:轻松导出和导入 Excel 文件
js-xlsx 是一个强大的 JavaScript 库,可让你使用纯 JS 读取和导出 Excel 文件。它的功能强大,支持多种格式,包括 XLS、XLSX 和 ODS。
安装 js-xlsx
通过 npm 安装 js-xlsx:
npm install js-xlsx
导入 js-xlsx
在你的 JavaScript 项目中导入 js-xlsx:
import * as XLSX from 'js-xlsx';
导出 Excel 文件
让我们导出一个包含姓名、年龄和性别数据的简单 Excel 文件:
// 将数据转换为 Excel 表格
const worksheet = XLSX.utils.aoa_to_sheet([
['姓名', '年龄', '性别'],
['张三', 20, '男'],
['李四', 22, '女'],
]);
// 创建一个新的工作簿
const workbook = XLSX.utils.book_new();
// 将工作表添加到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'sheet1');
// 将工作簿写入文件
XLSX.writeFile(workbook, 'test.xlsx');
支持中文
要导出带有中文数据的 Excel 文件,请在 writeFile
方法中添加 bookSST: true
选项:
XLSX.writeFile(workbook, 'test.xlsx', { bookType: 'xlsx', bookSST: true });
指定列宽
为特定列指定宽度:
// 设置列宽数组
const colWidths = [10, 10, 10];
// 为工作表添加列宽
worksheet['!cols'] = colWidths;
指定行高
指定特定行的行高:
// 设置行高数组
const rowHeights = [20, 20, 20];
// 为工作表添加行高
worksheet['!rows'] = rowHeights;
合并单元格
// 添加合并单元格
XLSX.utils.sheet_add_aoa(worksheet, [['合并单元格', '合并单元格']], {
origin: {
r: 0,
c: 0,
},
destination: {
r: 1,
c: 2,
},
});
添加样式
// 创建一个样式对象
const style = {
font: {
name: 'Arial',
sz: 12,
bold: true,
},
alignment: {
horizontal: 'center',
vertical: 'center',
},
};
// 为单元格应用样式
XLSX.utils.cell_style(worksheet, { r: 0, c: 0 }, style);
添加图片
// 创建一个 Image 对象
const image = new Image();
image.src = 'image.png';
// 将图片添加到工作簿
XLSX.addImage(workbook, image, 'image1');
// 在工作表中添加图片
XLSX.utils.cell_add_image(worksheet, 'image1', {
tl: {
r: 0,
c: 0,
},
br: {
r: 10,
c: 10,
},
});
结论
js-xlsx 是一个强大的工具,可让你轻松地导出和导入 Excel 文件。它支持多种格式,包括 XLS、XLSX 和 ODS,并提供了许多有用的功能,如指定列宽、行高、合并单元格和添加样式。通过 js-xlsx,你可以轻松地创建和管理 Excel 文件,而无需使用第三方库或复杂的后端代码。
常见问题解答
Q1:js-xlsx 支持哪些文件格式?
A1:js-xlsx 支持 XLS、XLSX 和 ODS 格式。
Q2:我可以在导出时支持中文吗?
A2:是的,在 writeFile
方法中添加 bookSST: true
选项即可支持中文。
Q3:我可以为特定列指定宽度吗?
A3:是的,通过 worksheet['!cols'] = [宽度的数组]
即可。
Q4:我可以合并单元格吗?
A4:是的,使用 XLSX.utils.sheet_add_aoa
方法,指定 origin
和 destination
参数。
Q5:我可以为单元格添加样式吗?
A5:是的,使用 XLSX.utils.cell_style
方法并提供一个样式对象。