Невозможно создать файл Excel из XLSX в ионном - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю файл Excel из пользовательских данных, но, к сожалению, он не генерирует файл, и даже не знаю, в чем заключается ошибка, поэтому я могу хотя бы попытаться устранить эту ошибку.

Специально эта проблема возникает в Только для платформы iOS .

Ниже приведен код для создания файла Excel:

public createXSLX(): Promise<any> {
    return new Promise((resolve) => {
      let sheet = XLSX.utils.json_to_sheet(this.data);
      let wb = {
        SheetNames: ["export"],
        Sheets: {
          "export": sheet
        }
      };

  let wbout = XLSX.write(wb, {
    bookType: 'xlsx',
    bookSST: false,
    type: 'binary'
  });

  function s2ab(s) {
    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;
  }

  let blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });

  resolve(blob);
});


}

Эта функция работает очень хорошо в Android, но вiOS - это не файл генерации из предоставленных данных.

Как я вызываю приведенный выше код функции:

onExportNew = function (toEmail) {
    this.createXSLX().then((xclBlob) => {
      let time = new Date().getTime();
      let fileName: string = "roster_" + time + ".xlsx";
      var fs = ''
      if (this.platform.is('ios')){
        fs = this.file.documentsDirectory;
      }else{
        fs = this.file.externalDataDirectory;
      }

      console.log("File Path:- ",fs)

      this.file.writeFile(fs, fileName, xclBlob, true).then(() => {
        let fp = fs + fileName;

        let email = {
          // to: 'lmahajan@cisco.com',
          // cc: 'erika@mustermann.de',
          // bcc: ['john@doe.com', 'jane@doe.com'],
          to: toEmail,
          attachments: [fp],
          subject: 'Roster Excel File',
          body: '<h1>PFA</h1>',
          isHtml: true
        };

        this.emailComposer.open(email).then(() => {
          this.showDone = true;
        }).catch(() => {
          let toast = this.toastCtrl.create({
            message: 'Could not open email composer',
            duration: 3000
          });
          toast.present();
        });

      }).catch(() => {
        this.displayAlert('Error', 'error creating file at: ' + fs);
      });
    }).catch(() => {
      console.log("Excel file creation error");
    });
  }

Если вы что-то упустили из приведенного выше кода, сообщите мне.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...