如何我可以读取Excel文件的JavaScript(无的ActiveXObject)(How can

2019-09-16 07:26发布

我的朋友问我,使从一个Excel文件的简单应用程序生成的图表(酒吧,曲线)。 我选择使用JavaScript作为一门语言,因为我已经知道了厉害chart.js之。 然而,使用前chart.js之,我不得不从Excel文件中收集数据。 因此,如何读通过JavaScript Excel文件?

经过一番研究,我设法用(使用ActiveX)与Internet Explorer要做到这一点,但我需要它跨浏览器的工作。

Answer 1:

有JavaScript库,允许XLS & XLSX在纯JavaScript解析。 我使用Chrome测试(虽然在Windows上)和它工作得很好。



Answer 2:

下面是对这个问题的另一个角度,而不是读一个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开发商。



Answer 3:

有一个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'
            }
        }
    }
});


Answer 4:

我认为,如果没有使用的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功能..



文章来源: How can I read an Excel File with JavaScript (without ActiveXObject)