2016-11-28 5 views
1

Я новичок в JavaScript. Я пытаюсь прочитать файл excel с использованием JavaScript.Не удается прочитать файл excel непосредственно из пути, используя javascript

Используя этот код, я получаю файл от объекта «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, просто нужно поместить URL-адрес файла excel напрямую – wisam

+0

@wesam Что вы хотите сказать «url-файл напрямую»? Кнопка обзора не позволяет выбрать файл из файловой системы или вы хотите загрузить файл из внешнего источника, а не из файловой системы? –

ответ

0

Ваш вопрос связан к API FileReader, а не к движку Excel Ignite. Вот что читатель файл может сделать:

Объект FileReader позволяет веб-приложениям асинхронно читать содержимое файлов (или необработанных буферов данных), которые хранятся на компьютере пользователя, с помощью файла или Blob объектов, чтобы указать файл или данные для чтения.

Файловые объекты могут быть получены из объекта FileList возвращается как результате выбора пользователем файлов с использованием элемента, из перетаскивания объекта DataTransfer операции, либо из mozGetAsFile() API на HTMLCanvasElement.

В документации содержится link. Сам FileReader не может получить доступ ко всей файловой системе на клиентском компьютере из-за многочисленных проблем безопасности.

Смежные вопросы