1、安装相关插件

npm install file-saver --save
npm install @types/file-saver --save-dev

一、xlsx(虽然强大,但是默认不支持改变样式,想要支持改变样式,需要使用它的收费版本。)

1、安装

npm install xlsx --save

2、写一个导出的service供使用

import { Injectable } from '@angular/core';
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';
@Injectable({
providedIn: 'root'
})
export class Export { /**
* 將Json數據導出為Excel文件
* @param json_data 數據內容
* @param excelName 文件名稱
* @param header 表頭(可选)
*/
downloadExcel(json_data: any, excelName: string,header?: string[]) { const ws = XLSX.utils.json_to_sheet(
json_data, {
header: header //設置表頭
}
)
//创建一个workbook对象
let wb = XLSX.utils.book_new()
//把worksheet对象添加进workbook对象,第三个参数是excel中sheet的名字
XLSX.utils.book_append_sheet(wb, ws, excelName)
//接下来就是写入,下载导出
let wb_out = XLSX.write(wb, { bookType: 'xlsx', type: 'array' })
FileSaver.saveAs(new Blob([wb_out], { type: 'application/octet-stream' }), excelName + '.xlsx')
}
/**
* 將表格導出為Excel文件
* @param table 表格內容
* @param fileName 文件名稱
*/
exportExcelByTable(table: any, fileName: string) {
const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(table);
const workbook: XLSX.WorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, ws, 'ClassDataExport');
const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
const data: Blob = new Blob([excelBuffer], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
});
FileSaver.saveAs(data, fileName+ '.xlsx');
}
}

注:

在typescript中,可能会碰到元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型“Object”。在类型“Object”上找不到“string”类型参数的索引签名问题。

要想解决这类问题,需要在tsconfig.json文件中配置:"suppressImplicitAnyIndexErrors": true 就可以解决此类问题。

二、ExcelJS(导出同时自适应宽高、设置字体、单元格格式)

1、安装

npm install exceljs

2、调整导出service,import { Workbook } from 'exceljs';

 downloadExcel(fileName: string, exportColumn: [] , exportData: any) {
if (exportData) {
let wb=new Workbook();
let sheet=wb.addWorksheet('sheet');
//设置表头行
let title=exportColumn.map((item:any)=>{
return item.title;
});
sheet.addRow(title);
exportData.map((data: any) => {
let temp: any[] = [];
exportColumn.map((item: any) => {
temp.push(data[item.name]) ;
})
sheet.addRow(temp);
})
//修改字体、对齐方式
sheet.eachRow(row=>{
row.font={
size: 10,
name: 'Arial',
bold:true
};
row.alignment = {vertical: 'middle', horizontal: 'center', wrapText: false,};
})
//自适应宽度、设置单元格格式
   sheet.columns.forEach((column:any, i)=> {
      let maxLength = 0;
      column["eachCell"]({ includeEmpty: true },  (cell: any) => {
     if(!cell.value.isNaN&&typeof(cell.value)==='number'){
          cell.numFmt='0';
        }
          let columnLength =this.getCellWidth(cell.value);
          if (columnLength > maxLength ) {
              maxLength = columnLength;
          }
      });
      column.width = maxLength < 10 ? 10 : maxLength;
    });

     wb.xlsx.writeBuffer().then((data)=>{
const blob: Blob = new Blob([data], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
});
FileSaver.saveAs(blob, fileName+ '.xlsx');
}) }
}
 getCellWidth(value:any){
    if(!value){
      return 10;
    }
    else if(value.toString().charCodeAt() > 255){
      return value.toString().length*2.1
    }
    else{
      return value.toString().length*1.1
    }
  }
 

注:安装exceljs后调试项目,可能出现Angular : Can't export excel using ExcelJS - error TS2307: Cannot find module 'stream' - error TS2503: Cannot find namespace 'NodeJS'错误,这时需要修改tsconfig.app.json文件

tsconfig.spec.json测试文件同理

Angular+FileSaver实现导出(xlsx或ExcelJS)的更多相关文章

  1. 十七 bootstrap-table tableExport 导出xlsx格式表格

    原文:十七 bootstrap-table tableExport 导出xlsx格式表格 在[十六.bootstrap-table javascript导出数据]中,打开导出的表格时,总会弹出一个提示 ...

  2. C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    报错信息: 最近打开下载的 Excel,会报如下错误.(xls 格式不受影响) 解决方案: 下载代码(红色为新添代码) public void download() { string fileName ...

  3. asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    NPOI导出xlsx格式文件,会出现如下情况: 点击“是”: 导出代码如下: /// <summary> /// 将datatable数据写入excel并下载 /// </summa ...

  4. FileSaver.js导出json文件和文本

    最近刚刚写了个json数据导出生成Excel文件的,顺便总结下利用FileSaver.js导出其他文件的,这里要注意的一个点就是,当导出的是json文件或是txt文件时,导出的内容要是字符串,特别当时 ...

  5. vue 导出xlsx表功能

    详细步骤: 1.需要安装三个依赖: npm install -S file-saver xlsx npm install -D script-loader 两个命令行包含三个依赖. 2.项目中src下 ...

  6. Vue+element 实现文件导出xlsx格式

    傻瓜教程:   第一步:安装两个依赖包 npm install --save xlsx file-saver 第二步:建立一个Vue文件,导入以下代码即可 <template> <d ...

  7. 手写OOXML文档——导出xlsx格式表格文档

    一.准备工作: 2个js库,另外把样式文件抽离出来 require('file-saver'); import JSZip from 'jszip' import {stylesData,theme1 ...

  8. 前端 vue/react 或者 js 导入/导出 xlsx/xls (带样式)表格的功能

    第一种导出表格的功能: yarn add xlsx script-loader file-saver xlsx-style 效果展示 xlsx-style的bug修复:node_module/xlsx ...

  9. NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式

    下载地址 http://npoi.codeplex.com/releases 下面放一个 NPOIHelper 助手类吧,也不是我写的- NpoiExcelHelper 可以生成xlsx格式publi ...

  10. Vue -- element-ui FileSaver.js 导出

    html <el-button type="danger" @click="exportRs">导出Excel报表</el-button> ...

随机推荐

  1. web基础(3):CSS样式

    chapter4 CSS样式 html是网页的内容和结构:CSS是网页的样式.内容和样式相分离,便于修改样式. CSS cascading style sheets 层叠样式表.一个内容上面可以添加多 ...

  2. cookie是什么?有什么用?

    cookie是什么? 储存在用户本地终端上的数据,是网站为了识别用户和跟踪回话而存储在用户本地终端中的文本数据 cookie就是保存在客户端的纯文本文件,比如txt文件,所谓的客户端就是我们自己的本地 ...

  3. HTML&CSS学习总结

    目录 一. HTML学习总结 1.HTML是什么 2.HTML结构 1. 创建一个HTML实例 2. HTML结构解析 3. HTML标题 4. HTML段落 5. HTML链接 6. HTML图像 ...

  4. vue table表格form表单校验输入内容,elment ui table内容校验 form表单input验证

    //html 部分<el-form :model="formObj" :rules="rules"> <el-table :data=&quo ...

  5. Web框架-inoic

    ionic 下载ionic 使用命令行安装npm 1.安装node.js 最后安装的目录在D:\2019-10-14\2019-11-04-2 检测nodejs安装成功? node -v 如果报错,是 ...

  6. Python的入门学习Day 10~13——form”夜曲编程“

    Day 10 time:2021.8.7. ​ 今天本来打算学习时发现手机应该拿去充电了,再上完J课程之后发现时间确实只留到了晚上呢 .但幸好,以我多天的敲代码的牢固根基(哈哈哈),我最终还是弥补回来 ...

  7. 微信小程序中如何把数组从一个页面传到另一个页面,并且获取数据

    // 传送端 举例 wx.navigateTo({ url: 'recite/recite?openid=' + k.data.openid + '&isexist=' + k.data.is ...

  8. vue用echarts不显示

    在html页面中套vue的情况来使用echarts,或者单独vue使用echarts,出现页面不渲染图表,代码渲染有的情况,加个this.$nextTick(()=>{})让他主动渲染一下就可以 ...

  9. 26 docker 安装 solr

    准备一台已经安装过docker的服务器 获得solr镜像 #可以指定版本 docker pull solr:7.5.0docker pull solr:7.7.3 创建数据挂载文件夹 允许访问权限 s ...

  10. 【Word】通配符和特殊字符

    [Word]通配符和特殊字符 ^p 换行符 正则表达式 使用\转义,用于[]等 参考资料 Word通配符怎么用?使用Word通配符的方法