rsc*_*rer 7 excel xlsx webpack angular angular5
是否有在 Angular 5 项目中使用缩小的 XLSX 的正确方法?
目前我将它用作:
import * as XLSX from 'xlsx';
Run Code Online (Sandbox Code Playgroud)
使用此导入,例如:
const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
Run Code Online (Sandbox Code Playgroud)
和
const workbook: XLSX.WorkBook = XLSX.utils.book_new();
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以使用 .min 文件来帮助减少包大小。如果是这样,如何正确导入和使用它?
这就是我在 Angular 中的做法:
import('xlsx').then(xlsx => {});
Run Code Online (Sandbox Code Playgroud)
仅当用户单击我的 Excel 服务按钮时才会触发:) 这似乎是“不好的做法”,但xlsx实际上无法正确缩小..无论如何,它为我的捆绑包节省了1.2MB!
GitHub 上的讨论:https://github.com/SheetJS/sheetjs/issues/694#issuecomment-688310069
获取类型需要额外(但很简单)的工作 - 阅读本文:如何使用动态导入的类型?
我受到这位遇到同样问题的开发人员的启发:https://netbasal.com/using-typescript-dynamic-imports-in-angular-d210547484dd
import { Injectable } from '@angular/core';
import * as FileSaver from 'file-saver';
// import * as XLSX from 'xlsx';
// import { utils, write } from 'xlsx';
// import { WorkSheet, WorkBook } from 'xlsx';
const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
const EXCEL_EXTENSION = '.xlsx';
@Injectable()
export class ExcelService {
constructor() { }
public exportAsExcelFile(arrOfObjs: {}[], excelFileName: string): void {
import('xlsx').then(xlsx => {
// console.log(xlsx);
const worksheet: import('xlsx').WorkSheet = xlsx.utils.json_to_sheet(arrOfObjs);
console.log('worksheet', worksheet);
const wb: import('xlsx').WorkBook = { Sheets: { data: worksheet }, SheetNames: ['data'] };
if (!wb.Workbook) { wb.Workbook = {}; }
if (!wb.Workbook.Views) { wb.Workbook.Views = []; }
if (!wb.Workbook.Views[0]) { wb.Workbook.Views[0] = {}; }
wb.Workbook.Views[0].RTL = true;
const excelBuffer: BlobPart = xlsx.write(wb, { bookType: 'xlsx', type: 'array' });
this.saveAsExcelFile(excelBuffer, excelFileName);
});
}
private saveAsExcelFile(buffer: BlobPart, fileName: string): void {
const data: Blob = new Blob([buffer], {
type: EXCEL_TYPE
});
FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1516 次 |
| 最近记录: |