插件窝 干货文章 如何用jq、jszip.js、FileSaver.js和excel-gen.js导出表格并自定义列顺序和单元格颜色?

如何用jq、jszip.js、FileSaver.js和excel-gen.js导出表格并自定义列顺序和单元格颜色?

文件 excel FileSaver 使用 568    来源:    2025-03-20

要使用 jqjszip.jsFileSaver.jsexcel-gen.js 导出表格并自定义列顺序和单元格颜色,你可以按照以下步骤进行操作:

1. 准备数据

首先,确保你有一个包含表格数据的 JSON 对象。假设你的数据如下:

[
    { "name": "Alice", "age": 25, "city": "New York" },
    { "name": "Bob", "age": 30, "city": "San Francisco" },
    { "name": "Charlie", "age": 35, "city": "Los Angeles" }
]

2. 使用 jq 处理数据

jq 是一个命令行工具,用于处理 JSON 数据。你可以使用 jq 来重新排列列的顺序。假设你想将列顺序改为 city, name, age,你可以使用以下命令:

jq '[.[] | {city: .city, name: .name, age: .age}]' data.json > reordered_data.json

这将生成一个新的 JSON 文件 reordered_data.json,其中列的顺序已经调整。

3. 使用 jszip.jsFileSaver.js 创建和保存 Excel 文件

接下来,你可以使用 jszip.jsFileSaver.js 来创建一个 Excel 文件并保存它。

首先,确保你已经引入了 jszip.jsFileSaver.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script>

然后,使用 excel-gen.js 来生成 Excel 文件。假设你已经引入了 excel-gen.js

<script src="excel-gen.js"></script>

4. 生成 Excel 文件并自定义单元格颜色

你可以使用以下 JavaScript 代码来生成 Excel 文件并自定义单元格颜色:

// 假设你已经加载了 reordered_data.json
const data = [
    { city: "New York", name: "Alice", age: 25 },
    { city: "San Francisco", name: "Bob", age: 30 },
    { city: "Los Angeles", name: "Charlie", age: 35 }
];

// 创建一个新的 Excel 工作簿
const workbook = new ExcelGen.Workbook();

// 添加一个工作表
const sheet = workbook.addSheet("Sheet1");

// 添加表头
sheet.addRow(["City", "Name", "Age"]);

// 添加数据行并自定义单元格颜色
data.forEach(row => {
    const dataRow = sheet.addRow([row.city, row.name, row.age]);
    // 自定义单元格颜色
    dataRow.cells[0].style = { fill: { fgColor: { rgb: "FFCCCC" } } }; // 城市列背景色
    dataRow.cells[1].style = { fill: { fgColor: { rgb: "CCFFCC" } } }; // 名称列背景色
    dataRow.cells[2].style = { fill: { fgColor: { rgb: "CCCCFF" } } }; // 年龄列背景色
});

// 生成 Excel 文件
workbook.generateAsync().then(buffer => {
    // 使用 FileSaver.js 保存文件
    const blob = new Blob([buffer], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
    saveAs(blob, "custom_table.xlsx");
});

5. 运行代码

将上述代码放入你的 HTML 文件中,并在浏览器中打开该文件。点击按钮或执行相关操作后,浏览器将下载一个名为 custom_table.xlsx 的 Excel 文件,其中包含自定义列顺序和单元格颜色的表格。

总结

通过结合 jqjszip.jsFileSaver.jsexcel-gen.js,你可以轻松地处理和导出表格数据,并自定义列顺序和单元格颜色。这种方法非常适合需要在前端生成和下载 Excel 文件的场景。