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

js循环导出多个word表格文档

文章目录

  • js循环导出多个word表格文档
    • 一、文档模板编辑
    • 二、安装依赖
    • 三、创建导出工具类exportWord.js
    • 四、调用
    • 五、效果图

js循环导出多个word表格文档

  • 结果案例:
    在这里插入图片描述

一、文档模板编辑

在这里插入图片描述

二、安装依赖

// 实现word下载的主要依赖
npm install docxtemplater pizzip  --save

// 文件操作,也可以用fs、path等模块实现
npm install jszip jszip-utils --save 

// 文件存储依赖
npm install file-saver --save

三、创建导出工具类exportWord.js

import PizZip from 'pizzip'
import Docxtemplater from 'docxtemplater'
import JSZipUtils from 'jszip-utils'
import {
    saveAs } from 'file-saver'

/**
 * 导出word,支持图片
 * @param {Object} tempDocxPath 模板文件路径
 * @param {Object} wordData 导出数据
 * @param {Object} fileName 导出文件名
 */
export const exportWord = (tempDocxPath, wordData, fileName) => {
   
  JSZipUtils.getBinaryContent(tempDocxPath, function (error, content) {
   
    if (error) {
   
      throw error;
    }
    // PizZip实例
    let zip = new PizZip(content);
    // 创建并加载docxtemplater实例
    let doc = new Docxtemplater();
    doc.loadZip(zip);
    // 设置模板变量的值
    doc.setData(wordData);
    try {
   
      // 用模板变量的值替换所有模板变量
      doc.render();
    } catch (error) {
   
      // 抛出异常
      let e = {
   
        message: error.message,
        name: error.name,
        stack: error.stack,
        properties: error.properties
      };
      console.log(JSON.stringify({
    error: e }));
      throw error;
    }
    // 生成docxtemplater对象zip文件
    let out = doc.getZip().generate({
   
      type: 'blob',
      mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    });
    // 将目标文件对象保存为目标类型的文件,并命名
    saveAs(out, fileName);
  });
}

四、调用

<script lang="ts">
import {
      exportWord } from '../../utils/exportWord'

export default {
     
  name: 'DbInfo',
  data (){
     
    return{
     
    }
  },
  mounted() {
     
  },
  methods: {
     
	// 导出方法
    batchExWord(){
     
    	var dataList = [
		   {
     
		        "tablecnName": "部门表",
		        "tableName": "sys_dept",
		        "tableDict": [
		            {
     
		                "cnfield": "部门id",
		                "colname": "dept_id",
		                "datatype": "bigint(20)",
		                "isprimary": "Y",
		                "isforeign": "N",
		                "isonly": "Y",
		                "nonempty": "Y",
		                "defaultstr": "N",
		                "describe": "部门id"
		            },
		            {
     
		                "cnfield": "父部门id",
		                "colname": "parent_id",
		                "datatype": "bigint(20)",
		                "isprimary": "N",
		                "isforeign": "N",
		                "isonly": "N",
		                "nonempty": "N",
		                "defaultstr": "0",
		                "describe": "父部门id"
		            },
		            {
     
		                "cnfield": "祖级列表",
		                "colname": "ancestors",
		                "datatype": "varchar(50)",
		                "isprimary": "N",
		                "isforeign": "N",
		                "isonly": "N",
		                "nonempty": "N",
		                "defaultstr": "N",
		                

http://www.kler.cn/a/428556.html

相关文章:

  • qml Timer详解
  • Hadoop•搭建完全分布式集群
  • 国产编辑器EverEdit - 列编辑模式
  • Pix2Pix:图像到图像转换的条件生成对抗网络深度解析
  • 游戏AI,让AI 玩游戏有什么作用?
  • 如何在oracle关闭情况下如何修改spfile的参数
  • OD B卷【恢复数字序列】
  • TCP客户端服务器端通信(线程池版)
  • 【机器学习】基于SVM、逻辑回归和CNN的手写数字识别:性能对比与应用分析
  • (七)腾讯cloudstudio+Stable-Diffusion-webui AI绘画教程-安装Stable-Diffusion-WebUI
  • Vue3组件通信(父传子,子传父,跨组件通信)
  • 21届秋/校招面经
  • xLSTM 阅读笔记
  • 日本IT|企业需要什么样的技术?
  • 处理后端返回的时间格式问题
  • MySQL -- CURD(下)
  • AUTOSAR CP复杂驱动程序(Complex Driver,CDD)的设计与集成指南导读
  • 动态规划子序列问题系列一>最长递增子序列
  • 用Python开发“迷你井字棋”小游戏
  • find命令深度详解
  • 计算机视觉:学习指南
  • 【python 批量将PPT中各种东西保存为图片 没有水印】
  • 在 Spring Boot 中使用 JPA(Java Persistence API)进行数据库操作
  • Telnet不安全?如何配置使用更安全的STelnet远程登录华为AR1000V路由器?
  • docker修改并迁移存储至数据盘
  • C语言求斐波那契数(不考虑溢出)(递归+迭代)