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

Posted

技术标签:

【中文标题】从 Excel 导入数据并在 Chart.js 中使用【英文标题】:Import data from Excel and use in Chart.js 【发布时间】:2017-09-10 23:32:58 【问题描述】:

好吧,我最近学习了如何使用标签画布渲染 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>

【问题讨论】:

我会使用 SheetJS 读取 .xlsx 文件并将数据转换为数据集。 github.com/SheetJS/js-xlsx 有很多示例如何加载和读取 .xlsx 文件。在 Javascript 数组中拥有所有数据行后,将它们转换为 chart.js 要求的正确格式并创建新图表。 【参考方案1】:

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

将以下 excel 文件另存为 mydata.xlsx 与您的 html 文件在同一目录中。

+--------------+-------+-------+-------+-------+-------+-------+
|              | 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>

【讨论】:

以上是关于从 Excel 导入数据并在 Chart.js 中使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用JavaScript读取Excel文件(不使用ActiveXObject)

将excel数据导入sql server数据库表并在gridview中显示

如何使用 Webpack 导入 Chart.js

Chart.js - 如何在加载时将折线图数据集设置为禁用

Chart.js 从图例中删除数据集值的标签

从 php 循环中绘制多个图表(Chart.js)以读取多个文件