layui.config({
  base: './../../static/layui/layui_exts/'
}).use(['table', 'excel'], function () {
  var table = layui.table //表格
    ,
    $ = layui.$,
    excel = layui.excel;
  $('#LAY-excel-import-excel').change(function (e) {
    // 注意：这里直接引用 e.target.files 会导致 FileList 对象在读取之前变化，导致无法弹出文件
    var files = Object.values(e.target.files)
    uploadExcel(files)
    // 变更完清空，否则选择同一个文件不触发此事件
    e.target.value = ''
  })
  // 文件拖拽
  document.body.ondragover = function (e) {
    e.preventDefault()
  }
  document.body.ondrop = function (e) {
    e.preventDefault()
    var files = e.dataTransfer.files
    uploadExcel(files)
  }

  if (!Array.from) {
    Array.from = function (el) {
      return Array.apply(this, el);
    }
  }

  /**
 * 上传excel的处理函数，传入文件对象数组
 * @param  {FileList} files [description]
 * @return {[type]}       [description]
 */
  function uploadExcel(files) {
    try {
      excel.importExcel(files, {
        // 可以在读取数据的同时梳理数据
        /*fields: {
          'id': 'A'
          , 'username': 'B'
          , 'experience': 'C'
          , 'sex': 'D'
          , 'score': 'E'
          , 'city': 'F'
          , 'classify': 'G'
          , 'wealth': 'H'
          , 'sign': 'I'
        }*/
      }, function (data, book) {
        // data: {1: {sheet1: [{id: 1, name: 2}, {...}]}}// 工作表的数据对象
        // book: {1: {Sheets: {}, Props: {}, ....}} // 工作表的整个原生对象，https://github.com/SheetJS/js-xlsx#workbook-object
        // 也可以全部读取出来再进行数据梳理
        /*        data = excel.filterImportData(data, {
                  'id': 'A'
                  , 'username': 'B'
                  , 'experience': 'C'
                  , 'sex': 'D'
                  , 'score': 'E'
                  , 'city': 'F'
                  , 'classify': 'G'
                  , 'wealth': 'H'
                  , 'sign': 'I'
                })*/
        // 如果不需要展示直接上传，可以再次 $.ajax() 将JSON数据通过 JSON.stringify() 处理后传递到后端即可
        /**
         * 2019-06-21 JeffreyWang 应群友需求，加一个单元格合并还原转换
         * 思路：
         * 1. 渲染时为每个cell加上唯一的ID，demo里边采用 table-export-文件索引-sheet名称-行索引-列索引
         * 2. 根据 book[文件索引].Sheets[sheet名称]['!merge'] 参数，取左上角元素设置 colspan 以及 rowspan，并删除其他元素
         */
        console.log(data, book);
      })
    } catch (e) {
      layer.alert(e.message)
    }
  }

});