import xlsx from 'xlsx'
import FileSaver from 'file-saver'
// 读取文件 
export const ReadFile=(file)=>{
    return new Promise(resolve => {
        let reader = new FileReader();
        reader.readAsBinaryString(file);
        reader.onload = ev => {  resolve(ev.target.result); }
    })
}
// 导入excel
export function UploadImport(file) {
    return new Promise((resolve,reject)=>{
        // ReadFile(file.raw).then((result)=>{
        ReadFile(file).then((result)=>{
            let dataBinary= result;// 读取文件
            let workBook = xlsx.read(dataBinary,{type:"binary",cellDates:true});
            let workSheet = workBook.Sheets[workBook.SheetNames[0]];
            let data = xlsx.utils.sheet_to_json(workSheet)||[];
            if(data.length>0){
                resolve(data);
            }
            else{
                reject();
            }
        })
    });
}
export function importExcel(_this) {
    let fullscreenLoading = _this.$loading({
      lock: true,
      text: '导入中...',
      spinner: 'el-icon-loading',
      background: 'rgba(0, 0, 0, 0.7)'
    });
    let obj = _this.imFile
    if (!obj.files) {
      fullscreenLoading.close();
      return
    }
    var f = obj.files[0]
    var reader = new FileReader()
    reader.onload = function (e) {
      var data = e.target.result
      // console.log('data',data);
      if (_this.rABS) {
        _this.wb = xlsx.read(btoa(this.fixdata(data)), {// 手动转化
          type: 'base64'
        })
      } else {
        _this.wb = xlsx.read(data, {
          type: 'binary'
        })
      }
      // console.log('wb',_this.wb.Sheets[_this.wb.SheetNames[0]]);
      let json = xlsx.utils.sheet_to_json(_this.wb.Sheets[_this.wb.SheetNames[0]])
      // console.log('json',typeof json)
      _this.dealFile(analyzeData(json)) // analyzeData: 解析导入数据
      fullscreenLoading.close();
    }
    if (_this.rABS) {
      reader.readAsArrayBuffer(f)
    } 
    else {
      reader.readAsBinaryString(f)
    }
    function analyzeData (data) {  // 此处可以解析导入数据
        return data||[]
    }
  }
  // 导出excel
  export function exportExcel(params) {
    params=params||{
      xlsxData:[["任务名称","任务地址"]],
      sheetName:'sheet1',
      fileName:'template'
    }
    const s2ab = s => {
      if (typeof ArrayBuffer !== 'undefined') {
          let buf = new ArrayBuffer(s.length)
          let view = new Uint8Array(buf)
          for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
          return buf
      } else {
          let buf = new Array(s.length);
          for (let i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
          return buf;
      }
    }
    let worksheet=xlsx.utils.aoa_to_sheet(params.xlsxData);
    let workBook =xlsx.utils.book_new();
    xlsx.utils.book_append_sheet(workBook,worksheet,params.sheetName);// 第三个参数可选,是工作表名称
    let wopts = { bookType: 'xlsx', bookSST: false, type: 'binary'}  //写入的样式
    let wbout = xlsx.write(workBook, wopts)
    try{
        let blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })
        FileSaver.saveAs(blob, params.fileName+'.xlsx')
    }
    catch(e){
      if(typeof console!=='undefined'){
        console.log(e,wbout)
      }
    }
  }