从目录中读取excel文件而不是从您给出的地址

时间:2023-02-06 12:20:57

I am using html5 and javascript. I want to read the Excel file which is chosen by the user from the directory (using a file dialog) but all I know is to read an excel file by the given path:

我正在使用html5和javascript。我想读取用户从目录中选择的Excel文件(使用文件对话框),但我所知道的是按给定路径读取excel文件:

function readdata(y,x) {
    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;
}

This is what I have to read the excel file. Can any one help me to read a file by directory, or without giving the path of the file. I would also like to know how to show output from that.

这是我必须阅读excel文件。任何人都可以帮助我按目录读取文件,或者不提供文件的路径。我也想知道如何显示输出。

Thanx in advance

提前完成

1 个解决方案

#1


2  

Try the following code, it is a bit of a hack and it seems to work with IE7. However, it will not work with other browsers because they will not show the file path. Other browsers will also never be able to show the ActiveXObject (Excel).

尝试下面的代码,它有点像黑客,它似乎与IE7一起使用。但是,它不能与其他浏览器一起使用,因为它们不会显示文件路径。其他浏览器也永远无法显示ActiveXObject(Excel)。

<!DOCTYPE html>
<html>
<head>
<body>
<div id="divHidden" style="visibility: hidden; width: 0px; height: 0px">
  <input type=file id="fileInput">
</div>
<input type=button value="click here to get a file" onclick="readdata(1,1);">

<script language=javascript>

    function readdata(y,x) {

        // Use the <input type='file'...> object to get a filename without showing the object.
        document.all["fileInput"].click();
        var fileName = document.all["fileInput"].value;

        try {
            var excel = new ActiveXObject("Excel.Application");
            excel.Visible = false;
            var excel_file = excel.Workbooks.Open(fileName);

            var excel_sheet = excel_file.Worksheets("Sheet1");
            //  var data = excel_sheet.Cells(x, y).Value;
            var data;
            for (; excel_sheet.Cells(x, y).Value.length > 0; x++){
                data[i][0] = excel_sheet.Cells(x, y).Value;
                data[i][1] = excel_sheet.Cells(x, y+1).Value;
            }
            drawWithexcelValue(data);
        }
        catch (ex) {
            alert(ex);
        }

        // This will show the data.
        alert(data);

    }

</script>
</body>
</html>

#1


2  

Try the following code, it is a bit of a hack and it seems to work with IE7. However, it will not work with other browsers because they will not show the file path. Other browsers will also never be able to show the ActiveXObject (Excel).

尝试下面的代码,它有点像黑客,它似乎与IE7一起使用。但是,它不能与其他浏览器一起使用,因为它们不会显示文件路径。其他浏览器也永远无法显示ActiveXObject(Excel)。

<!DOCTYPE html>
<html>
<head>
<body>
<div id="divHidden" style="visibility: hidden; width: 0px; height: 0px">
  <input type=file id="fileInput">
</div>
<input type=button value="click here to get a file" onclick="readdata(1,1);">

<script language=javascript>

    function readdata(y,x) {

        // Use the <input type='file'...> object to get a filename without showing the object.
        document.all["fileInput"].click();
        var fileName = document.all["fileInput"].value;

        try {
            var excel = new ActiveXObject("Excel.Application");
            excel.Visible = false;
            var excel_file = excel.Workbooks.Open(fileName);

            var excel_sheet = excel_file.Worksheets("Sheet1");
            //  var data = excel_sheet.Cells(x, y).Value;
            var data;
            for (; excel_sheet.Cells(x, y).Value.length > 0; x++){
                data[i][0] = excel_sheet.Cells(x, y).Value;
                data[i][1] = excel_sheet.Cells(x, y+1).Value;
            }
            drawWithexcelValue(data);
        }
        catch (ex) {
            alert(ex);
        }

        // This will show the data.
        alert(data);

    }

</script>
</body>
</html>