table表格导出为excel文件并设置样式

ops/2024/9/25 2:09:29/

excel_0">table表格导出为excel文件并设置样式

安装xlsx、xlsx-style-medalsoft 的 npm 包:

npm i xlsx xlsx-style-medalsoft

设置全局:

Vue.prototype.$XLSX = XLSX; // 设置全局
Vue.prototype.$XLSXStyle = XLSXStyle; // 设置全局

具体代码实现:

// 导出excel文件
exportFile() {// 导出名称let excelName = "file" + dateFormat(new Date(), "YYYY-MM-DD HH-mm-ss") + ".xlsx";const xlsxParam = { raw: true }; // 转化成Excel使用原始格式const table_book = this.$XLSX.utils.table_to_book(document.querySelector("#table"),xlsxParam);// console.log(table_book)let wbs = table_book.Sheets.Sheet1;// console.log(wbs)let arrA = Object.keys(wbs);arrA.forEach((item, index) => {if (wbs[item].v == "") {delete wbs[item];}});// 设置列宽this.column.forEach((item, i) => {wbs["!cols"][i] = { wch: 16 };});// 设置行高this.allTable.forEach((row, rowIndex) => {wbs["!rows"][rowIndex + 1] = { hpt: 24 };});wbs["!rows"][0] = { hpt: 24 };// 循环遍历每一个表格,设置样式for (const key in wbs) {if (key.indexOf("!") === -1) {wbs[key].s = {font: {sz: 11, // 字体大小bold: false, // 加粗name: "宋体", // 字体color: {rgb: "000000", // 十六进制,不带#},},alignment: {// 文字居中horizontal: "center",vertical: "center",wrapText: false, // 文本自动换行},border: {// 设置边框top: { style: "thin" },bottom: { style: "thin" },left: { style: "thin" },right: { style: "thin" },},};}// 设置表头样式if (key == "A1" || key == "B1" || key == "C1" || key == "D1" || key == "E1" ) {wbs[key].s.fill = {bgColor: { indexed: 64 },fgColor: { rgb: "95B3D7" },};}}let table_write = this.$XLSXStyle.write(table_book, {bookType: "xlsx",type: "buffer",});try {this.$FileSaver.saveAs(new Blob([table_write], { type: "application/octet-stream" }),excelName);} catch (e) {if (typeof console !== "undefined") {// console.log(e, table_write);}}return table_write;
},

http://www.ppmy.cn/ops/25129.html

相关文章

利用Python开发一个上传文件的服务

准备工作: 1、安装uvicorn,利用其来作为web服务器 2、安装Starlette,利用其来作为web开发框架 3、安装python-multipart,让其支持form表达形式的文件上传 4、postman:文件上传的发起者,这样我们就不用写…

Visual Studio C++ 示例

Visual Studio C++ 示例 项目2023/06/163 个参与者反馈 本文内容 GitHub 上的存档 C++ 示例ATL 示例CLR 和语言示例 - Windows 窗体COM 事件示例显示另外 13 个 Visual Studio C++ 示例可在 Web 上找到。 Microsoft 已生成许多 C++ 示例,这些示例演示了跨多种技术的不同功能…

React、React Router 和 Redux 常用Hooks 总结,提升您的开发效率!

Hooks 是 React 16.8 中引入的一种新特性,它使得函数组件可以使用 state 和其他 React 特性,从而大大提高了函数组件的灵活性和功能性。下面分别总结React、React Router 、Redux中常用的Hooks。 常用Hooks速记 React Hooks useState:用于…

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian)

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian) clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;% 读取图像 image imread(lena.png); % 转换为灰度图像 gray_image rgb2gray(image); % 转换为double类型以进行计算…

ADB 命令获取Android 设备的屏幕分辨率和屏幕像素密度

1. 获取屏幕分辨率和像素密度 获取 Android 设备屏幕分辨率: adb shell wm size Physical size: 1440x3120 获取android设备屏幕密度(DPI): adb shell wm density Physical density: 560 打印屏幕相关的详细信息: adb shell dumpsys wi…

vue修改路由meta的标题

项目场景: vue脚手架项目根据不同的条件动态设置路由title 解决方案: javascript const layout [{path: /Detail,component: () > import(/index.vue),name: Detail,meta: {title: ,keepAlive: false,},beforeEnter: (to, from, next) > {if (t…

2022 csp-j 答案(精选题)

主题目 16 - 21题 22 - 27题 28 - 34题 35 -39题 40 - 44题 精选题目 答案及解析 28题 答案:T 解析:考查时间复杂度评估。 31题 答案:A 解析:模拟即可。 32题 答案:B 解析:模拟即可。 34题 答…

前端复习资料

前端复习资料 落叶的位置,谱出一首诗,时间在消逝,我们的故事。 这篇文章呢,整理写给需要的前端同学的。 核心知识,必须掌握的,也是最基础的,譬如浏览器模型,渲染原理,JS…