我的朋友问我,使从一个Excel文件的简单应用程序生成的图表(酒吧,曲线)。 我选择使用JavaScript作为一门语言,因为我已经知道了厉害chart.js之。 然而,使用前chart.js之,我不得不从Excel文件中收集数据。 因此,如何读通过JavaScript Excel文件?
经过一番研究,我设法用(使用ActiveX)与Internet Explorer要做到这一点,但我需要它跨浏览器的工作。
我的朋友问我,使从一个Excel文件的简单应用程序生成的图表(酒吧,曲线)。 我选择使用JavaScript作为一门语言,因为我已经知道了厉害chart.js之。 然而,使用前chart.js之,我不得不从Excel文件中收集数据。 因此,如何读通过JavaScript Excel文件?
经过一番研究,我设法用(使用ActiveX)与Internet Explorer要做到这一点,但我需要它跨浏览器的工作。
有JavaScript库,允许XLS & XLSX在纯JavaScript解析。 我使用Chrome测试(虽然在Windows上)和它工作得很好。
下面是对这个问题的另一个角度,而不是读一个Excel与JavaScript文件,你可以直接在Excel中使用JavaScript与Funfun Excel插件的帮助。 基本上,Funfun是一个工具,允许你使用JavaScript在Excel中,所以你可以使用库像chart.js之从电子表格中的数据绘制图表。
基本上,你需要做的是什么
1)。 插入的Funfun从Office插件加载项店
2)。 创建一个新的Funfun或加载从Funfun在线编辑器的样本
3)。 写的javascrip代码,您在任何其他JavaScript编辑器做。 在这一步中,以便直接从电子表格中使用这些数据,你需要写一些JSON I / O,以使Excel单元格引用。 这个地方这个值是在设置-短暂的 ,但这将只是几行。 例如,假设我们在电子表格中有一些数据,如下面。 平均小时是在单元格A1。
Average hours Jan Feb Mar Apr
Baby Jones 93.5 81 94.5 95.5
Joanne Jones 91.5 90 88.5 85.5
在这种情况下,JSON I / O值将是:
{
"months": "=C6:G6",
"manager1": "=C7:G7",
"manager2": "=C8:G8"
}
您可以检查Funfun 文档进行更多的解释。
4)。 运行代码来绘制图
下面是我使用JavaScript(chart.js之)和Excel数据上Funfun在线编辑器做了一个示例图表。 你可以检查一下下面的链接。 你可以按照在步骤2中描述也很容易将其加载到您的Excel。
https://www.funfun.io/1/edit/5a365e7c74efa7334ff272a6
披露:我是来自Funfun开发商。
有一个chart.js之插件chartjs-插件,数据源 ,可以很容易地从Excel文件加载数据。
让我们假设你有如下一个Excel文件,并将其保存为mydata.xlsx
在同一目录作为您的HTML文件:
+---------------+---------+----------+-------+-------+------+------+------+
| | January | February | March | April | May | June | July |
+---------------+---------+----------+-------+-------+------+------+------+
| Temperature | 7 | 7 | 10 | 15 | 20 | 23 | 26 |
+---------------+---------+----------+-------+-------+------+------+------+
| Precipitation | 8.1 | 14.9 | 41.0 | 31.4 | 42.6 | 57.5 | 36.0 |
+---------------+---------+----------+-------+-------+------+------+------+
包括chart.js之, SheetJS(JS-XLSX)和chartjs-插件,数据源在你的页面:
<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>
<canvas id="myChart"></canvas>
然后,指定mydata.xlsx
在您的脚本。
var ctx = document.getElementsById("myChart");
var chart = new Chart(ctx, {
type: 'bar',
data: {
datasets: [{
type: 'line',
yAxisID: 'temperature',
backgroundColor: 'transparent',
borderColor: 'rgb(255, 99, 132)',
pointBackgroundColor: 'rgb(255, 99, 132)',
tension: 0,
fill: false
}, {
yAxisID: 'precipitation',
backgroundColor: 'rgba(54, 162, 235, 0.5)',
borderColor: 'transparent'
}]
},
plugins: [ChartDataSource],
options: {
scales: {
yAxes: [{
id: 'temperature',
gridLines: {
drawOnChartArea: false
}
}, {
id: 'precipitation',
position: 'right',
gridLines: {
drawOnChartArea: false
}
}]
},
plugins: {
datasource: {
url: 'mydata.xlsx'
}
}
}
});
我认为,如果没有使用的ActiveX你不能阅读的Excel file..I我不会对你说,你不能没有阅读的ActiveX可能是有一种方法excel文件的文件,但我不知道这样,所以如果你想使用ActiveX阅读,然后这里是你可以使用用于读取Excel文件中的代码
<input type="button" id="btnSubmit" onclick="readdata(1, 2)" value="Submit" />
<script>
var xVal = 1;
var yVal = 2
function readdata(x,y) {
x = xVal;
y = yVal;
try {
var excel = new ActiveXObject("Excel.Application");
excel.Visible = false;
var excel_file = excel.Workbooks.Open("D:\\Test.xls");// alert(excel_file.worksheets.count);
var excel_sheet = excel_file.Worksheets("Sheet1");
for(i=0;i<5;i++)
{
var data = excel_sheet.Cells(i,2).Value;
drawWithexcelValue(data);
}
}
catch (ex) {
alert(ex);
}
</script>
它将运行只能在IE 9及以上,且必须激活从设置的ActiveX功能..