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

如何使用JavaScript(没有ActiveXObject)读取Excel文件,javascript,excel,charts,highcharts,Javascript,Excel,Charts,Highcharts,我的朋友让我制作一个简单的应用程序,从Excel文件生成图表(条形图、曲线)。我选择使用JavaScript作为一种语言,因为我已经知道强大的chart.js。但是,在使用chart.js之前,我必须从Excel文件中收集数据。那么,如何通过JavaScript读取Excel文件呢 经过一些研究,我成功地用Internet Explorer(使用ActiveX)实现了这一点,但我需要它跨浏览器工作。我认为没有ActiveX你无法读取excel文件。我不是说没有ActiveX你无法读取excel文

我的朋友让我制作一个简单的应用程序,从Excel文件生成图表(条形图、曲线)。我选择使用JavaScript作为一种语言,因为我已经知道强大的chart.js。但是,在使用chart.js之前,我必须从Excel文件中收集数据。那么,如何通过JavaScript读取Excel文件呢


经过一些研究,我成功地用Internet Explorer(使用ActiveX)实现了这一点,但我需要它跨浏览器工作。

我认为没有ActiveX你无法读取excel文件。我不是说没有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>

var xVal=1;
var yVal=2
函数readdata(x,y){
x=xVal;
y=yVal;
试一试{
var excel=新的ActiveXObject(“excel.Application”);
excel.Visible=false;
var excel_file=excel.Workbooks.Open(“D:\\Test.xls”);//警报(excel_file.worksheets.count);
var excel_sheet=excel_file.Worksheets(“Sheet1”);

对于(i=0;i有一些JavaScript库,允许用纯JavaScript解析&我用Chrome进行了测试(尽管是在Windows上)它工作得很好。

这是关于这个问题的另一个观点,您可以在Funfun Excel加载项的帮助下直接在Excel中使用JavaScript,而不是使用JavaScript读取Excel文件。Funfun是一个允许您在Excel中使用JavaScript的工具,因此您可以使用诸如Chart.js之类的库从我收集的数据绘制图表n电子表格

基本上,你需要做的是

1)。从Office加载项商店插入Funfun加载项

2)。创建新的Funfun或从Funfun在线编辑器加载示例

3)。像在任何其他JavaScript编辑器中一样编写JavaScrip代码。在这一步中,为了直接使用电子表格中的数据,您需要编写一些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)。运行代码以绘制图表

这是我在Funfun online editor上使用JavaScript(chart.js)和Excel数据制作的示例图表。您可以在下面的链接上查看它。您也可以按照步骤2所述轻松地将其加载到Excel


披露:我是Funfun的开发人员。有一个Chart.js插件,可以轻松地从Excel文件加载数据

假设您有一个Excel文件,如下图所示,并将其保存为
mydata.xlsx
与HTML文件位于同一目录中:

+---------------+---------+----------+-------+-------+------+------+------+
||一月|二月|三月|四月|五月|六月|七月|
+---------------+---------+----------+-------+-------+------+------+------+
|温度| 7 | 7 | 10 | 15 | 20 | 23 | 26|
+---------------+---------+----------+-------+-------+------+------+------+
|降水量| 8.1 | 14.9 | 41.0 | 31.4 | 42.6 | 57.5 | 36.0|
+---------------+---------+----------+-------+-------+------+------+------+
在页面中包括Chart.js和chartjs插件数据源:


然后,在脚本中指定
mydata.xlsx

var ctx=document.getElementsById(“myChart”);
var图表=新图表(ctx{
类型:'bar',
数据:{
数据集:[{
键入:“行”,
yAxisID:'温度',
背景色:“透明”,
边框颜色:“rgb(255,99,132)”,
pointBackgroundColor:“rgb(255,99,132)”,
张力:0,
填充:假
}, {
雅克西德:“降水量”,
背景颜色:“rgba(54162235,0.5)”,
边框颜色:“透明”
}]
},
插件:[图表数据源],
选项:{
比例:{
雅克斯:[{
id:'温度',
网格线:{
drawOnChartArea:假
}
}, {
id:'降水',
位置:'右',
网格线:{
drawOnChartArea:假
}
}]
},
插件:{
数据源:{
url:'mydata.xlsx'
}
}
}
});

我认为你向他解释如何设置服务器要比用JavaScript诚实地设置服务器容易得多。只要告诉他下载XAMPP,真的很难……或者你可以直接导出到csv。用JavaScript这样做几乎是不可能的。Excel文件是非常复杂的文件,从中获取数据在Excel外部显示em将非常复杂。如果客户端计算机上有Excel,您可以下载Excel文件并在Excel中打开它,然后在Excel中显示图表。Excel中的图表有什么问题?除非他们特别要求基于web的图表(如果他们没有web服务器,可能没有?)在excel中使用图表会简单得多。问题是,他只会使用excel键入数据和刷新浏览器,老实说,如果我不能用Chrome或FF解决这个问题,我会教他如何使用WAMP或XAMPP,php会用php ExcelReader完成其余工作,并将JSON发送到javascript客户端,以便绘制图表