国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Angular Excel 導入與導出的實現代碼

2024-05-06 15:40:29
字體:
來源:轉載
供稿:網友

前言

本文基于 angular v7.2.7,初次編寫于2019-4-17。

雖然代碼是基于angular 7.2.7,但是語法是基于 angular 4.X 以上均可使用 。在項目開發過程中,我們經常需要跟后端進行文件交互,常見的諸如 圖片上傳,excel 導入與導出等。這里我們只討論關于excel 的導入與導出。

Excel 導入

excel 導入在angular 中其實非常簡單,只需要安裝 xlsx插件 就可以了。

安裝 xlsx 插件

npm install xlsx --save

在component 中導入

import * as XLSX from 'xlsx';

關鍵代碼

import * as XLSX from 'xlsx';excelData = [];importExcel(evt: any) {  /* wire up file reader */  const target: DataTransfer = <DataTransfer>(evt.target);  if (target.files.length !== 1) throw new Error('Cannot use multiple files');  const reader: FileReader = new FileReader();  reader.onload = (e: any) => {   /* read workbook */   const bstr: string = e.target.result;   const wb: XLSX.WorkBook = XLSX.read(bstr, { type: 'binary' });   /* grab first sheet */   const wsname: string = wb.SheetNames[0];   const ws: XLSX.WorkSheet = wb.Sheets[wsname];   /* save data */   this.excelData = (XLSX.utils.sheet_to_json(ws, { header: 1 }));   evt.target.value = "" // 清空  };  reader.readAsBinaryString(target.files[0]); }

Excel 導出

傳統的導出功能我們一般是放在后端實現,由后端生成文件的Url或者文件流給到前端。注:這種是通過瀏覽器的下載功能直接下載的。一般有以下幾種方式實現:

get 請求 + window.open(url)

后端返回一個 文件的url 或者 文件流,這種方式均可以直接下載。 前提是http請求為get 。

post 請求 + <a>標簽

前端代碼:

exportExcel(codeList: string[]) {  return this.http.post(this.ExportExcelByCodesUrl, codeList, {   responseType: 'arraybuffer',//設置響應類型   observe:"response",//返回response header   headers: { 'Content-Type': 'application/json' }  })   .subscribe((response:any)=>{    this.downLoadFile(response, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8")   }) } /**  * Method is use to download file.  * @param data - Array Buffer data  * @param type - type of the document. */downLoadFile(data: any, type: string) {   var blob = new Blob([data.body], { type: type});   let downloadElement = document.createElement('a');   let href = window.URL.createObjectURL(blob); //創建下載的鏈接   downloadElement.href = href;   let filename = data.headers.get("Download-FileName");//后端返回的自定義header   downloadElement.download = decodeURI(filename);    document.body.appendChild(downloadElement);   downloadElement.click(); //點擊下載   document.body.removeChild(downloadElement); //下載完成移除元素   window.URL.revokeObjectURL(href); //釋放掉blob對象 }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 容城县| 芦溪县| 哈巴河县| 彭州市| 综艺| 隆化县| 张家口市| 昌吉市| 宕昌县| 翁牛特旗| 龙川县| 阿拉善左旗| 磐石市| 四平市| 黄大仙区| 武胜县| 仁寿县| 老河口市| 光泽县| 长海县| 邹城市| 长乐市| 黔西县| 靖宇县| 清水河县| 海林市| 布拖县| 泽州县| 紫云| 台南县| 资阳市| 上林县| 广东省| 勃利县| 山丹县| 咸丰县| 保山市| 隆德县| 靖州| 高平市| 保山市|