1. 产品
  2.   电子表格
  3.   Node.js
  4.   XLSX-Chart
 
  

免费 Node.js 库,创建多个 Excel 图表

顶级开源 Node.js 库,可在 Excel 工作表中生成简易和高级图表。它能够在单个文件中创建多个图表、生成用于网络下载的图表以及从模板生成图表,适用于 Node.js 环境。

XLSX-Chart 是什么?

如果你在 Node.js 环境中需要生成带有嵌入图表的 Excel 文件,开源包 XLSX-Chart 是一个非常值得考虑的选项。许多库可以生成 Excel 工作表、设置单元格值等,但很少有库支持在 XLSX 中嵌入图表。XLSX-Chart 弥补了这一空白。API 使用相当直接——指定图表类型、标题、字段、数据,然后写入文件。它支持多种类型(柱形图、条形图、折线图、面积图、雷达图、散点图、饼图),可以根据数据选择最合适的图表类型。如果需要更细致的控制(布局、样式),还能提供自己的 Excel 模板作为图表生成的基础。

XLSX-Chart 是由 Dmitriy Samortsev 开发的轻量级 Node.js 包,帮助软件开发者在 Node.js 应用中以编程方式创建 Excel 图表。它提供方法直接写入文件或生成二进制数据(用于 HTTP 下载),这在 Web 应用中非常方便。该库封装了处理 Excel Open XML 格式的复杂性,提供直观的 API 来生成各种图表类型。无论是构建商业智能仪表板、自动化报告系统还是数据分析工具,XLSX-Chart 都提供了简洁的 Excel 图表生成方案。其直观的 API、对多种图表类型的支持以及灵活的输出选项,使其成为构建报告系统、商业智能工具或数据可视化应用的理想选择。

Previous Next

XLSX-Chart 入门指南

要安装 XLSX-Chart,您可以使用 npm(JavaScript 的包管理器)。请使用以下命令进行成功安装。

使用 npm 安装 XLSX-Chart

npm install xlsx-chart

您可以下载来自 GitHub 仓库的已编译共享库并安装它。

在 Node.js 中创建简易柱形图

开源 XLSX-Chart 库已完整支持在 Node.js 应用中于 Excel 工作表中创建简单和高级图表。以下代码示例创建了一个柱状图,用于比较四种产品的季度销售额。titles 数组表示数据系列(季度),而 fields 表示类别(产品)。data 对象包含每个组合的实际数值。

如何在 Node.js 中创建显示季度销售额的简易 Excel 图表?

var XLSXChart = require("xlsx-chart");
var xlsxChart = new XLSXChart();

var opts = {
    file: "sales-report.xlsx",
    chart: "column",
    titles: [
        "Q1 Sales",
        "Q2 Sales",
        "Q3 Sales"
    ],
    fields: [
        "Product A",
        "Product B",
        "Product C",
        "Product D"
    ],
    data: {
        "Q1 Sales": {
            "Product A": 5,
            "Product B": 10,
            "Product C": 15,
            "Product D": 20
        },
        "Q2 Sales": {
            "Product A": 10,
            "Product B": 5,
            "Product C": 20,
            "Product D": 15
        },
        "Q3 Sales": {
            "Product A": 20,
            "Product B": 15,
            "Product C": 10,
            "Product D": 5
        }
    }
};

xlsxChart.writeFile(opts, function(err) {
    if (err) {
        console.error("Error generating chart:", err);
    } else {
        console.log("Chart created successfully:", opts.file);
    }
});

在 Node.js 中于单文件创建多个图表

XLSX-Chart 的强大功能之一是在单个工作簿中生成多个图表,适用于 Node.js 应用。该库使软件开发者能够创建具有自定义数值和多种可视化的图表。以下代码示例展示了如何使用三种不同图表类型创建综合报告。charts 数组允许您定义多个可视化,每个都有自己的配置。chartTitle 属性为每个图表提供描述性名称。这在高管仪表板或详细分析报告中尤为有用。

如何在一个文件中创建多个图表(Node.js 应用)?

let fs = require("fs");
let XLSXChart = require("xlsx-chart");
let xlsxChart = new XLSXChart();

let opts = {
    charts: [{
        chart: "column",
        titles: ["2023", "2024"],
        fields: ["Jan", "Feb", "Mar", "Apr"],
        data: {
            "2023": {
                "Jan": 100,
                "Feb": 120,
                "Mar": 140,
                "Apr": 130
            },
            "2024": {
                "Jan": 110,
                "Feb": 135,
                "Mar": 150,
                "Apr": 145
            }
        },
        chartTitle: "Monthly Performance Comparison"
    }, {
        chart: "line",
        titles: ["Website Traffic", "Mobile Traffic"],
        fields: ["Week 1", "Week 2", "Week 3", "Week 4"],
        data: {
            "Website Traffic": {
                "Week 1": 5000,
                "Week 2": 5500,
                "Week 3": 6000,
                "Week 4": 6200
            },
            "Mobile Traffic": {
                "Week 1": 3000,
                "Week 2": 3500,
                "Week 3": 4200,
                "Week 4": 4800
            }
        },
        chartTitle: "Traffic Analysis"
    }, {
        chart: "pie",
        titles: ["Market Share"],
        fields: ["Company A", "Company B", "Company C", "Others"],
        data: {
            "Market Share": {
                "Company A": 35,
                "Company B": 28,
                "Company C": 22,
                "Others": 15
            }
        },
        chartTitle: "Market Distribution"
    }]
};

xlsxChart.generate(opts, function(err, data) {
    if (err) {
        console.error("Error:", err);
        return;
    }
    fs.writeFileSync("comprehensive-report.xlsx", data);
    console.log("Multi-chart report created successfully!");
});


require('fs').writeFileSync('inventory.xlsx', report);

生成用于网络下载的图表

开源 XLSX-Chart 库使软件开发者能够轻松生成可通过 Web 应用下载的图表。以下是一个强大的示例,演示在 Express.js 路由中生成柱状图。generate 方法将图表数据以缓冲区形式返回,然后通过适当的响应头发送给客户端进行下载。这种方式非常适合在服务器上不创建临时文件的动态报告生成。

如何在 Node.js 中创建用于网页下载的 Excel 图表?

var XLSXChart = require("xlsx-chart");
var xlsxChart = new XLSXChart();

// Express.js route example
app.get('/download-report', function(req, res) {
    var opts = {
        chart: "bar",
        titles: ["Revenue", "Expenses", "Profit"],
        fields: ["January", "February", "March", "April"],
        data: {
            "Revenue": {
                "January": 50000,
                "February": 55000,
                "March": 60000,
                "April": 58000
            },
            "Expenses": {
                "January": 30000,
                "February": 32000,
                "March": 35000,
                "April": 33000
            },
            "Profit": {
                "January": 20000,
                "February": 23000,
                "March": 25000,
                "April": 25000
            }
        }
    };

    xlsxChart.generate(opts, function(err, data) {
        if (err) {
            return res.status(500).send("Error generating chart");
        }
        
        res.set({
            "Content-Type": "application/vnd.ms-excel",
            "Content-Disposition": "attachment; filename=financial-report.xlsx",
            "Content-Length": data.length
        });
        res.status(200).send(data);
    });
});

使用自定义模板创建 Excel 图表

对于有特定品牌需求的组织,自定义模板提供了完整的控制权,用于创建和管理 Excel 图表。templatePath 选项指向一个预先格式化的 Excel 文件。XLSX-Chart 将使用此模板作为基础,在保持自定义格式、颜色、字体和布局的同时应用您的数据。请注意,自定义模板目前最适用于柱形图。下面的代码演示了如何实现此功能。

如何使用自定义模板在 Node.js 中创建 Excel 图表?

var XLSXChart = require("xlsx-chart");
var xlsxChart = new XLSXChart();

var opts = {
    file: "branded-report.xlsx",
    chart: "column",
    templatePath: __dirname + "/templates/company-template.xlsx",
    titles: ["Sales Team A", "Sales Team B"],
    fields: ["Q1", "Q2", "Q3", "Q4"],
    data: {
        "Sales Team A": {
            "Q1": 45000,
            "Q2": 52000,
            "Q3": 58000,
            "Q4": 61000
        },
        "Sales Team B": {
            "Q1": 42000,
            "Q2": 48000,
            "Q3": 55000,
            "Q4": 59000
        }
    }
};

xlsxChart.writeFile(opts, function(err) {
    if (err) {
        console.error("Template error:", err);
    } else {
        console.log("Branded report created!");
    }
});

 中国人