5

私は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;
}

これは私がExcelファイルを読まなければならないものです。ディレクトリごとに、またはファイルのパスを指定せずにファイルを読み取るのを手伝ってくれる人はいますか。それからの出力を表示する方法も知りたいです。

事前にサンクス

4

1 に答える 1

2

次のコードを試してみてください。これはちょっとしたハックですが、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>
于 2013-06-27T00:34:54.057 に答える