2016-11-28 13 views
1

私はtoJavaScriptが新しくなっています。 JavaScriptを使用してExcelファイルを読み込もうとしています。javascriptを使用してパスから直接Excelファイルを読み取ることができません

ブラウズボタンから選択したファイルを読み込み、以下のコードを使用して、私は、オブジェクトからファイルを取得しています「FileReaderの」、私は直接URLファイルを挿入する必要があり、コード:

<script type="text/javascript"> 
function myFunction() 
{ 
    var x = document.getElementById("mySelect").value; 
    document.getElementById("demo").innerHTML = x; 
} 
    $(function() { 
     $("#input").on("change", function() 
     { 
      var excelFile, 
       fileReader = new FileReader(); 
      $("#result").hide(); 
      fileReader.onload = function (e) { 

       var buffer = new Uint8Array(fileReader.result); 
       var workbook = new $.ig.excel.Workbook("C:\\xampp\\htdocs\\TrustAgents.xlsx"); 
       $.ig.excel.Workbook.load(buffer, function (workbook) 
       { 
        var column, row, newRow, cellValue, columnIndex, i, 
         worksheet = workbook.worksheets(0), 
         columnsNumber = 0, 
         gridColumns = [], 
         data = [], 
         worksheetRowsCount; 

        // Both the columns and rows in the worksheet are lazily created and because of this most of the time worksheet.columns().count() will return 0 
        // So to get the number of columns we read the values in the first row and count. When value is null we stop counting columns: 
        while (worksheet.rows(0).getCellValue(columnsNumber)) { 
         columnsNumber++; 
        } 

        // Iterating through cells in first row and use the cell text as key and header text for the grid columns 
        for (columnIndex = 0; columnIndex < columnsNumber; columnIndex++) { 
         column = worksheet.rows(0).getCellText(columnIndex); 
         gridColumns.push({ headerText: column, key: column }); 
        } 

        // We start iterating from 1, because we already read the first row to build the gridColumns array above 
        // We use each cell value and add it to json array, which will be used as dataSource for the grid 
        for (i = 1, worksheetRowsCount = worksheet.rows().count() ; i < worksheetRowsCount; i++) { 
         newRow = {}; 
         row = worksheet.rows(i); 

         for (columnIndex = 0; columnIndex < columnsNumber; columnIndex++) { 
          cellValue = row.getCellText(columnIndex); 
          newRow[gridColumns[columnIndex].key] = cellValue; 
         } 

         data.push(newRow); 
        } 

        // we can also skip passing the gridColumns use autoGenerateColumns = true, or modify the gridColumns array 
        createGrid(data, gridColumns); 
       }, function (error) { 
        $("#result").text("The excel file is corrupted."); 
        $("#result").show(1000); 
       }); 
      } 

      if (this.files.length > 0) 
      { 
       excelFile = this.files[0]; 
       if (excelFile.type === "application/vnd.ms-excel" || excelFile.type === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" || (excelFile.type === "" && (excelFile.name.endsWith("xls") || excelFile.name.endsWith("xlsx")))) 
       { 
        fileReader.readAsArrayBuffer(excelFile); 
       } 
       else 
       { 
        $("#result").text("The format of the file you have selected is not supported. Please select a valid Excel file ('.xls, *.xlsx')."); 
        $("#result").show(1000); 
       } 
      } 

     }) 
    }) 

    function createGrid(data, gridColumns) { 
     if ($("#grid1").data("igGrid") !== undefined) { 
      $("#grid1").igGrid("destroy"); 
     } 

     $("#grid1").igGrid({ 
      columns: gridColumns, 
      autoGenerateColumns: true, 
      dataSource: data, 
      width: "100%" 
     }); 
    } 
</script> 
+0

私はあなたがignite-uiライブラリを使用していると仮定しています。また、あなたが正確に得ているエラーは何ですか?私はあなたの質問からそれを理解することはできません。 – Sid

+0

はい私はignite-uiライブラリを使用して、すぐにexcelファイルのurlを置く必要があります – wisam

+0

@wesam "urlファイルを直接"したいのはどういう意味ですか?ブラウズボタンではファイルシステムからファイルを選択できませんか、ファイルシステムからではなく外部ソースからファイルをロードしますか? –

答えて

0

あなたの質問は関連していますIgnite UI Excelエンジンではなく、FileReader APIに転送します。 FileReaderのオブジェクトは、Webアプリケーションが非同期ファイル(または生データ・バッファ)の 内容を読み取ることができます

ユーザーのコンピュータに保存されている、 ファイルを指定するには、ファイルまたはBLOBオブジェクトを使用するか:ここでは、ファイルリーダーは何ができるかです読み込むデータ。

ファイルオブジェクトがファイルリストオブジェクトから取得することができる ドラッグから、素子を使用してファイルを選択するユーザの 結果として返され、操作者のdataTransferオブジェクトを削除、またはHTMLCanvasElementに mozGetAsFile()APIから。

ここにはlinkが記載されています。 FileReader自体は、セキュリティ上の懸念があるため、クライアントマシン上のファイルシステム全体にアクセスすることはできません。

関連する問題