当前位置: 首页 > news >正文

angular xlsx-style,复杂表头样式导出

 导出效果如下图所示:

下载xlsx

npm install xlsx

angular.json中引入:

 "node_modules/xlsx/dist/xlsx.full.min.js","src/assets/js/jszip.js","src/assets/js/xlsx.js"

 两个插件地址:

 上传中,等下更新

 typings.d.ts中需要加一下声明

ts代码:

export(){var wb = XLSX.utils.table_to_book(document.getElementById("tableDataId"), { sheet: "Sheet JS", raw: true });let range = XLSX.utils.decode_range(wb.Sheets['Sheet JS']['!ref']);// let borderStyle = {//   top: {//     style: "thin",//     color: { rgb: "000000" }//   },//   bottom: {//     style: "thin",//     color: { rgb: "000000" }//   },//   left: {//     style: "thin",//     color: { rgb: "000000" }//   },//   right: {//     style: "thin",//     color: { rgb: "000000" }//   }// }// wb.Sheets['Sheet JS']['!rows'] = [{ hpx: 150 }, { hpx: 50 }, { hpx: 50 }, { hpx: 50 }, { hpx: 50 }, { hpx: 50 }]const numColumns = 100;wb.Sheets['Sheet JS']['!cols'] = Array(numColumns).fill({ wpx: 160 });wb.Sheets['Sheet JS']["!merges"].forEach((item: any) => {if (item.e.r == item.s.r && item.e.c != item.s.c) {// 列合并let R = item.s.r;let countLength = item.e.c - item.s.c;for (let i = item.s.c; i <= item.e.c; i++) {let cell = { c: i, r: R };let cell_ref = XLSX.utils.encode_cell(cell);if (!wb.Sheets['Sheet JS'][cell_ref]) {wb.Sheets['Sheet JS'][cell_ref] = { t: "s", v: "" };}}} else if (item.e.c == item.s.c && item.e.r != item.s.r) {// 行合并let C = item.s.c;let countLength = item.e.r - item.s.r;for (let i = item.s.r; i <= item.e.r; i++) {let cell = { c: C, r: i };let cell_ref = XLSX.utils.encode_cell(cell);if (!wb.Sheets['Sheet JS'][cell_ref]) {wb.Sheets['Sheet JS'][cell_ref] = { t: "s", v: "" };}}}})console.log();for (let C = range.s.c; C <= range.e.c; ++C) {for (let R = range.s.r; R <= range.e.r; ++R) {let cell = { c: C, r: R };let cell_ref = XLSX.utils.encode_cell(cell);console.log(wb.Sheets['Sheet JS'][cell_ref]);wb.Sheets['Sheet JS'][cell_ref].s = {alignment: {horizontal: 'center', // 水平居中vertical: 'center', // 垂直居中wrapText: 1, // 文本自动换行},font: {name: "黑体",sz: "15",bold: true},// border: borderStyle,};}}var wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' };var wbout = XLSXX.write(wb, wopts);// 使用xlsx-style 写入saveAs(new Blob([s2ab(wbout)], { type: "" }), this.selectTitle[this.selectTitle.length-1]+".xlsx")function s2ab(s: any) {var buf = new ArrayBuffer(s.length);var view = new Uint8Array(buf);for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;return buf;}
}

html:

<table id="tableDataId"><tr></tr>
<table>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis的内存淘汰策略-noeviction
  • [kylin M900]麒麟操作系统固件修改与合成
  • 超级会员卡积分收银系统源码,一站式解决方案,可以收银的小程序 带完整的安装代码包以及搭建部署教程
  • WAF和防火墙有什么区别
  • 基于jstack、jmap、jstat 进行JVM监控
  • 避坑之:深信服AC跨三层取MAC(核心交换机是锐捷S7808C_RGOS 11.0(4)B2P1)
  • Java Operator SDK
  • day01-项目概述、环境搭建
  • CMake构建学习笔记13-opencv库的构建
  • 如何克服编程学习中的挫折感?
  • Unity工具篇 专栏目录
  • Python操作 MySQL 之 pysql与SQLAchemy
  • 大数据-113 Flink DataStreamAPI 程序输入源 自定义输入源 非并行源与并行源
  • 开学要买什么?出门少不了续电神器充电宝!性价比超高充电宝
  • android studio .android和.gradle迁移到其他盘
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Git的一些常用操作
  • jquery cookie
  • JS基础之数据类型、对象、原型、原型链、继承
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • MySQL用户中的%到底包不包括localhost?
  • PhantomJS 安装
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Python学习之路16-使用API
  • Spark RDD学习: aggregate函数
  • springMvc学习笔记(2)
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • underscore源码剖析之整体架构
  • webpack入门学习手记(二)
  • 蓝海存储开关机注意事项总结
  • 聊聊hikari连接池的leakDetectionThreshold
  • 双管齐下,VMware的容器新战略
  • 为什么要用IPython/Jupyter?
  • 一文看透浏览器架构
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $.ajax中的eval及dataType
  • $GOPATH/go.mod exists but should not goland
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (27)4.8 习题课
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (分布式缓存)Redis分片集群
  • (六)激光线扫描-三维重建
  • (面试必看!)锁策略
  • (十一)图像的罗伯特梯度锐化
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Mysql的优化设置
  • (转)大型网站架构演变和知识体系
  • (转)甲方乙方——赵民谈找工作
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core 发展历程和版本迭代