繁体   English   中英

从Excel导入数据并在Chart.js中使用

[英]Import data from Excel and use in Chart.js

好吧,我最近学会了如何使用标签canvas渲染html图形。 但是手动填写数据有些麻烦……我想知道是否有可能仅使用JavaScript从Excel电子表格中直接获取这些数据。 到目前为止,这是我的代码...

 <div> <canvas class="line-chart"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script> <script> var ctx = document.getElementsByClassName("line-chart"); var dia = ["Dia 1", "Dia 2", "Dia 3", "Dia 4", "Dia 5", "Dia 6"]; //Seta os dias var real = [60,30,65,59,58,49]; //Seta os dados do grafico 1 var meta = [30,45,62,47,55,11]; //Seta os dados do grafico 2 //Type, data, options var chartGraph = new Chart (ctx, { type: 'line', //line, bar, radar, doughnut (pizza), polarArea data: { labels: dia, datasets: [{ label: "OEE Real (%) ", data: real, borderWidth: 6, borderColor: 'rgba(146,242,42,0.85)', background: 'transparent', }, { label: "OEE Meta (%)", data: meta, borderWidth: 6, borderColor: 'rgba(207,0,15,0.85)', background: 'transparent', }, ]}, options: { title: { display: true, fontSize: 20, text: "ENCARTUCHAMENTO 05" }, scales: { yAxes: [{ ticks: { max: 100, min: 0, } }] }, } }); </script> </div> 

最简单的方法是使用chartjs-plugin-datasource ,它利用SheetJS(js-xlsx)

将以下excel文件另存为与HTML文件位于同一目录中的mydata.xlsx

+--------------+-------+-------+-------+-------+-------+-------+
|              | Dia 1 | Dia 2 | Dia 3 | Dia 4 | Dia 5 | Dia 6 |
+--------------+-------+-------+-------+-------+-------+-------+
| OEE Real (%) |    60 |    30 |    65 |    59 |    58 |    49 |
+--------------+-------+-------+-------+-------+-------+-------+
| OEE Meta (%) |    30 |    45 |    62 |    47 |    55 |    11 |
+--------------+-------+-------+-------+-------+-------+-------+

然后,在脚本中指定它。

<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.14.3/dist/xlsx.full.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datasource@0.1.0"></script>

<div>
    <canvas class="line-chart"></canvas>
</div>

<script>

var ctx = document.getElementsByClassName("line-chart");

//Type, data, options

var chartGraph = new Chart (ctx, {
    type: 'line',
    data: {
        datasets: [{
            borderWidth: 6,
            borderColor: 'rgba(146, 242, 42, 0.85)',
            fill: false
        }, {
            borderWidth: 6,
            borderColor: 'rgba(207, 0, 15, 0.85)',
            fill: false
        }
    ]},
    plugins: [ChartDataSource],
    options: {
        title: {
            display: true,
            fontSize: 20,
            text: 'ENCARTUCHAMENTO 05'
        },
        scales: {
            yAxes: [{
                ticks: {
                    max: 100,
                    min: 0,
                }
            }]
        },
        plugins: {
            datasource: {
                url: 'mydata.xlsx'
            }
        }
    }
});

</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM