如何通过单元格编号获取Excel数据

时间:2019-02-21 12:01:48

标签: javascript jquery html5

我想将Excel数据提取为HTML。我正在使用以下脚本,但是我想使用单元号而不是Excel标题,因为标题可以不同。

然后我想将HTML数据转换为JSON并将其发送到数据库,因此Excel标题无效。我想忽略Excel标题,只使用单元格位置来获取数据

<div id="dvExcel"></div>
<input type="file" id="fileUpload" />
<input type="button" id="upload" value="Upload" onclick="Upload()" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>

function Upload() {
  var fileUpload = document.getElementById("fileUpload");
  var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.xls|.xlsx)$/;
  if (regex.test(fileUpload.value.toLowerCase())) {
    if (typeof(FileReader) != "undgefined") {
      var reader = new FileReader();

      if (reader.readAsBinaryString) {
        reader.onload = function(e) {
          ProcessExcel(e.target.result);
        };
        reader.readAsBinaryString(fileUpload.files[0]);
      } else {
        reader.onload = function(e) {
          var data = "";
          var bytes = new Uint8Array(e.target.result);
          for (var i = 0; i < bytes.byteLength; i++) {
            data += String.fromCharCode(bytes[i]);
          }
          ProcessExcel(data);
        };
        reader.readAsArrayBuffer(fileUpload.files[0]);
      }
    } else {
      alert("This browser does not support HTML5.");
    }
  } else {
    alert("Please upload a valid Excel file.");
  }
};

function ProcessExcel(data) {
  //Read the Excel File data.
  var workbook = XLSX.read(data, {
    type: 'binary'
  });

  var firstSheet = workbook.SheetNames[0];
  var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
  var table = document.createElement("table");
  table.border = "1";
  var row = table.insertRow(-1);
  var headerCell = document.createElement("TH");
  headerCell.innerHTML = "Id";
  row.appendChild(headerCell);

  for (var i = 0; i < excelRows.length; i++) {
    //Add the data row.
    var row = table.insertRow(-1);
    var cell = row.insertCell(-1);
    cell.innerHTML = excelRows[i].Id;
  }

  var dvExcel = document.getElementById("dvExcel");
  dvExcel.innerHTML = "";
  dvExcel.appendChild(table);
};

我要使用Excel单元号而不是excelRows[i].Id,因为Id标题可以不同,但​​我需要该字段的数据。

0 个答案:

没有答案