フロントエンドページでエクスポート機能を実現するフロントバックグラウンドの組み合わせ

2815 ワード

1.リンクのダウンロード
データ、ファイルフォーマットは全部バックグラウンドでカプセル化して、前のリンクに戻ります.先端はリンクをクリックして自動的にダウンロードします.
(1)window.location.href = ‘url’
(2)
2.解析バックグラウンドから戻ってきたファイルストリーム
このような方法は、バックグラウンドでエクスポートするファイルをファイルフローでフロントエンドに戻し、フロントエンドをblobで解析し、aタグを動的に作成することである.let content=res.data;/ファイルフローlet blob=new Blob([content])let fileName='filename.xls'
if ('download' in document.createElement('a')) {  //  IE  
let link = document.createElement('a');
link.download = fileName;
link.style.display = 'none';
link.href = URL.createObjectURL(blob);
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(link.href) ; //   URL   
document.body.removeChild(link);
} else {  // IE10+  
  navigator.msSaveBlob(blob);
}
3.データを受信し、純先端を実現する
このような方式はバックグランドが対応するデータを提供すればよく、フロントエンドがフォームデータを動的に生成し、再フォーマットするということです.
let excel = '';
//     
let row = '' +
'' +
'' +
'' +
'';
excel += row + '';
//       
for(let i = 0 ; i < this.excelData.length ; i++ ){
    excel += '';
for(let item in this.excelData[i]){
//  \t                   
if (!this.excelData[i][item]) {
  this.excelData[i][item] = '';
}
excel +=``;
}
excel +='';
}
excel += '
1 2 3
${ this.excelData[i][item] + '\t'}
'; // var excelFile = ''; excelFile += ''; excelFile += ''; excelFile += ''; excelFile += ''; excelFile += ''; excelFile += ''; excelFile += excel; excelFile += ''; excelFile += ''; // let uri = 'data:application/vnd.ms-excelcharset=utf- 8,' + encodeURIComponent(excelFile); let link = document.createElement('a'); link.href = uri; link.style = 'visibility:hidden'; let myDate = new Date(); let time = myDate.toLocaleDateString().split('/').join('-'); link.download = 'fileName' + time + '.xls'; document.body.appendChild(link); link.click();