返回

便捷前端导出excel文件工具与示例代码

前端

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 方法,指定 origindestination 参数。

Q5:我可以为单元格添加样式吗?
A5:是的,使用 XLSX.utils.cell_style 方法并提供一个样式对象。