Vue常用Excel导出工具SheetJS
SheetJS(也称为 xlsx
库),这是一个非常强大的 JavaScript 库,用于读取和写入各种电子表格格式(如 Excel 文件)。它支持多种文件格式,包括 .xlsx
、.xls
、.csv
等。
官网地址:概述 | SheetJS 中文网
1. 什么是SheetJS?
定义
SheetJS 是一个开源的 JavaScript 库,用于处理电子表格文件。它提供了读取、写入和操作电子表格的功能,支持多种文件格式。SheetJS 的核心是 xlsx
库,它可以在浏览器和 Node.js 环境中使用。
特点
-
支持多种文件格式:包括
.xlsx
、.xls
、.csv
、.ods
等。 -
跨平台:可以在浏览器和 Node.js 中使用。
-
功能强大:支持读取、写入、修改电子表格,以及复杂的单元格操作(如样式、公式等)。
2. 安装SheetJS
在浏览器中使用
你可以通过 CDN 引入 xlsx
库(可以直接放到index.html的head标签中):
<script src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>
在 Node.js 中使用
如果你使用的是 Node.js,可以通过 npm 安装:
npm install xlsx
3. 基本使用方法
3.1 读取Excel文件
示例:读取 .xlsx
文件
const XLSX = require('xlsx');
// 读取文件
const workbook = XLSX.readFile('example.xlsx');
// 获取第一个工作表的名称
const sheetName = workbook.SheetNames[0];
// 获取工作表
const worksheet = workbook.Sheets[sheetName];
// 将工作表转换为JSON
const data = XLSX.utils.sheet_to_json(worksheet);
console.log(data);
3.2 写入Excel文件
示例:创建一个新的 .xlsx
文件
const XLSX = require('xlsx');
// 创建一个新的工作簿
const workbook = XLSX.utils.book_new();
// 创建一个工作表的数据
const data = [
['Name', 'Age', 'Occupation'],
['Alice', 25, 'Engineer'],
['Bob', 30, 'Designer'],
['Charlie', 35, 'Manager']
];
// 将数据转换为工作表
const worksheet = XLSX.utils.aoa_to_sheet(data);
// 将工作表添加到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// 保存工作簿到文件
XLSX.writeFile(workbook, 'output.xlsx');
4. 高级功能
4.1 设置单元格样式
SheetJS 支持设置单元格的样式,如字体、背景颜色、边框等。
示例:设置单元格样式
const XLSX = require('xlsx');
// 创建一个新的工作簿
const workbook = XLSX.utils.book_new();
// 创建一个工作表的数据
const data = [
['Name', 'Age', 'Occupation'],
['Alice', 25, 'Engineer'],
['Bob', 30, 'Designer'],
['Charlie', 35, 'Manager']
];
// 将数据转换为工作表
const worksheet = XLSX.utils.aoa_to_sheet(data);
// 设置第一行的样式
const firstRow = 1; // 第一行的行号(从1开始)
const lastCol = XLSX.utils.decode_col(XLSX.utils.encode_col(data[0].length - 1)); // 最后一列的列号
// 遍历第一行的每个单元格并设置样式
for (let col = 1; col <= lastCol; col++) {
const cellAddress = { r: firstRow, c: col }; // 单元格地址
const cellRef = XLSX.utils.encode_cell(cellAddress); // 单元格引用(如A1)
const cell = worksheet[cellRef]; // 获取单元格对象
if (cell) {
cell.s = { // 设置单元格样式
fill: { // 设置背景颜色
fgColor: { rgb: '000000' } // 深色背景
},
font: { // 设置字体样式
color: { rgb: 'FFFFFF' }, // 白色字体
bold: true // 加粗
}
};
}
}
// 将工作表添加到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// 保存工作簿到文件
XLSX.writeFile(workbook, 'styled_output.xlsx');
4.2 处理公式
SheetJS 支持读取和写入单元格公式。
示例:处理公式
const XLSX = require('xlsx');
// 创建一个新的工作簿
const workbook = XLSX.utils.book_new();
// 创建一个工作表的数据
const data = [
['A', 'B', 'C'],
[1, 2, '=A2+B2']
];
// 将数据转换为工作表
const worksheet = XLSX.utils.aoa_to_sheet(data);
// 将工作表添加到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// 保存工作簿到文件
XLSX.writeFile(workbook, 'formula_output.xlsx');
5. 总结
-
SheetJS是什么:一个用于处理电子表格文件的JavaScript库,支持多种文件格式。
-
特点:支持多种文件格式,功能强大,跨平台。
-
基本使用:读取和写入电子表格文件,操作单元格。
-
高级功能:设置单元格样式,处理公式。
-
原理:通过解析器将文件内容转换为JavaScript对象,方便操作。