如何使用javascript从用户定义的excel文件中获取输入

时间:2013-06-25 14:42:32

标签: javascript html excel

你好..               我正在制作一个页面,其中我必须从用户获取excel文件并读取该文件..但我所知道的是通过给出其地址来读取特定文件。因此我使用的是javascript和html ..这是我的用于读取excel文件的代码

        <input type="button" id="btnSubmit" onclick="readdata(1, 2)" value="Submit" />

                <script>
            function readdata(x,y) {


       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");
        var data = excel_sheet.Cells(x, y).Value;
        //alert(data);
        drawWithexcelValue(data);
    }
    catch (ex) {
        alert(ex);
    }
    //    return data;


     }
     </script>

这是我通过定义特定excel文件的路径来读取excel文件的代码...现在我要做的是从用户获取excel文件。请帮助..

任何通过代码提供的帮助都会非常感激。

有人请帮帮我

1 个答案:

答案 0 :(得分:0)

正如@Alex K所提到的,这只适用于IE。 这是一个可能的解决方案:

将所有Excel文件放在同一文件夹中。例如:C:\sheets\ (编辑:我认为这是最简单的解决方案,因为我不知道如何通过javascript获取文件的完整和真实路径)

现在将代码更改为以下内容:

<input type="file" id='excelFile' />
<button id='loadExcel'>Load Excel File</button>

<script type="text/javascript">
    var EXCELDIR = "C:\\sheets\\";
    var loadExcel = document.getElementById('loadExcel');
    loadExcel.onclick = function() {
        var filepath = EXCELDIR + document.getElementById('excelFile').value.split('\\')[2];
        readdata(1,2, filepath);
    }

    function readdata(x,y,filepath) {
       try {
        var excel = new ActiveXObject("Excel.Application");
        excel.Visible = false;
        var excel_file = excel.Workbooks.Open(filepath);                       
               alert(excel_file.worksheets.count);
        var excel_sheet = excel_file.Worksheets("Sheet1");
        var data = excel_sheet.Cells(x, y).Value;
        //alert(data);
        drawWithexcelValue(data);
        }
        catch (ex) {
            alert(ex);
        }
        //    return data;


    }
</script>

免责声明:我没有检查代码,因为我在mac上,希望这可行。