Vue中下载内容为word文档

news2024/9/21 16:38:13

1.使用 html-docx-js:这是一个将 HTML 转换为 Word 文档的库。
2. 利用 Blob 和 FileSaver.js:创建并下载生成的 Word 文档。

在 Vue.js 中实现步骤如下:

1. npm 安装 html-docx-js 和 file-saver

npm install html-docx-js
npm install file-saver

2.引入插件

import htmlDocx from 'html-docx-js/dist/html-docx';
import { saveAs } from 'file-saver';

3. 页面使用(vue3中使用)

<template>
  <div>
    <div ref="contentToConvertRef">
      <!-- 这里是你要转换为 Word 文档的页面内容 -->
      <!-- 样式要写行内,表格样式在下面处理了-->
      <h3 style="text-align: center">这是一个标题</h3>
      <el-table :data="tableData" ref="tableRef">
        <el-table-column prop="name" label="名称" align="center" />
        <el-table-column prop="age" label="年龄" align="center" />
        <el-table-column prop="sex" label="性别" align="center" />
        <el-table-column prop="phone" label="联系电话" align="center" />
        <el-table-column prop="address" label="地址" align="center" />
        <el-table-column label="操作" align="center">
         <template #default>
        	<el-button type="text" @click="viewTableData">查看</el-button>
           	<el-button type="text" @click="editTableData">修改</el-button>
         </template>
       </el-table-column> 
      </el-table>
      <!-- 你可以在这里放置更多内容 -->
    </div>
    <button @click="downloadAsWord">下载为 Word</button>
  </div>
</template>
<script setup lang="ts">
	const contentToConvertRef = ref<any>(null)
	const downloadAsWord = async () => {
	  // 获取要转换为 Word 的 HTML 内容
	  if (!contentToConvertRef.value.length) {
	    return
	  }
	  // 表格下载会不全,如果有表格需要修改样式添加下面这部分
	  const tables = contentToConvertRef.value.querySelectorAll('table')
	  tables.forEach((table: any, tableIndex: any) => {
	    table.style.width = '100%'
	    table.querySelectorAll('td, th').forEach((cell: any, index: any) => {
	      if (cell) {
	        const indexNum = (index + 1) % 7 
	        // 因为我最后一列是操作列,不想让下载所以进行了判断,如果没有则不需要判断
	        if (indexNum === 0) {
	        	// 添加这个时候一定要在css中给些样式,不然页面会有变化
	          cell.style.display = 'none'
	        } else {
	        	// 每列进行了平分宽度
	          cell.style.width = '20%'
	          // 如果没有给写列居中,下载时页面会进行居中,如果不需要则可不写
	          cell.style.textAlign = 'center'
	        }
	      }
	    })
	  })
	  
	  const content = contentToConvertRef.value.innerHTML
	  // 包装 HTML 为完整的文档结构
	  const contentWithHeader = `
	    <!DOCTYPE html>
	    <html>
	    <head>
	      <meta charset="utf-8">
	      <title>Document</title>
	    </head>
	    <body>${content}</body>
	    </html>
	  `
	  // 使用 htmlDocx 转换为 Word 文档
	  const docxBlob = htmlDocx.asBlob(contentWithHeader)
	  const newDate = dateFormat(new Date())
	  // 使用 file-saver 保存文件
	  saveAs(docxBlob, `${newDate}报告.docx`)
	}
</script>

<style lang="scss" scoped>
	.el-table {
	  :deep(.el-table__cell:last-child) {
	    display: block !important;
	  }
	}
</style>

4. 下载打开如下图
在这里插入图片描述
好了,有什么问题欢迎留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2051360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAS-ViT:面向高效移动应用的卷积加性自注意力视觉Transformer

摘要 https://arxiv.org/pdf/2408.03703 视觉转换器&#xff08;Vision Transformers&#xff0c;ViTs&#xff09;以其标记混合器强大的全局上下文能力&#xff0c;在神经网络领域取得了革命性的进展。然而&#xff0c;尽管以往的工作已做出相当大的努力&#xff0c;但成对标…

终于来了!中国首个接入大模型的Linux开源操作系统正式发布!

在AI飞速发展的今天&#xff0c;谁不希望自己的电脑里住着一个AI助手&#xff0c;我们动动嘴皮子就能指挥电脑干活&#xff0c;省时省力&#xff1f;但是Windows Copilot锁了区&#xff0c;很多用户只能“望洋兴叹”。 而现在&#xff0c;国产站出来了&#xff0c;说我们也有A…

Python常用的模块

一、logging模块 一&#xff09;日志级别 critical50 error40 waring30 info20 debug10 notset0 二&#xff09;默认的日志级别是waring&#xff08;30&#xff09;&#xff0c;默认的输出目标是终端 logging输出的目标有两种&#xff1a;1、终端&#xff1b;2、文件 高于warn…

如何查看麒麟系统下的CPU信息

如何查看麒麟系统下的CPU信息 一、使用lscpu命令二、使用cat /proc/cpuinfo命令 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在麒麟&#xff08;Kylin&#xff09;Linux系统中&#xff0c;了解CPU的详细信息对于系统性能调优、故障诊断以…

转债违约,是实体经济高质量发展的一大步?

8月14日&#xff0c;岭南股份公告其发行的可转债无法按期兑付&#xff0c;出现实质违约。8月16日&#xff0c;证券时报发表了一篇“雄文”《国企可转债的刚兑信仰该放下了》&#xff0c;引爆了舆论。 文章内容总结下&#xff0c;就是对投资者一顿批评教育&#xff0c;批评投资者…

leetcode-461. 汉明距离

题目描述 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 示例 1&#xff1a; 输入&#xff1a;x 1, y 4 输出&#xff1a;2 解释&#xff1a; 1 (0 0 0 1) 4 (0 1 0 0) …

Spring7中事务传播机制形象图解

一、Spring的7种事务传播机制 Spring事务传播机制是指在多个事务方法相互调用的情况下&#xff0c;事务如何在方法之间进行传播和管理的机制。通过事务传播机制&#xff0c;可以控制事务的范围和行为&#xff0c;保证多个事务方法的一致性和完整性。Spring提供了七种事务传播行…

Linux系统挂载U盘方法

第一步&#xff1a; 插入U盘&#xff0c;如果能够识别出U盘&#xff0c;则会**出一些信息 第二步&#xff1a; 查看U盘系统分配给U盘的设备名&#xff1b;输入如下命令进行查看&#xff1a; 使用fdisk -l命令查看一下U盘是否有被识别到&#xff0c;及识别的U盘是在哪个位置 …

8.15 day bug

bug1 一个按钮折腾了 两个小时 一直点第一个按钮&#xff0c;然后进去后发现根本没有课程&#xff0c;需要创建workspace&#xff0c;然后各种问题&#xff0c;还是没把课程启动起来&#xff0c;然后去看gitpod使用文档&#xff0c;搞懂工作区到底是怎么回事&#xff0c;一通操…

实用篇| 如何快速搭建“二手系统”的数据库

对于一些程序员最痛苦的是接手一些“二手系统“&#xff0c; 由于年久失修&#xff0c; 加上裁员离职&#xff0c;系统文档不完善等原因&#xff0c; 只留下服务器配置和代码。 接手人&#xff0c;只能对着这些仅存的代码和服务器硬刚&#xff0c; 对服务器硬刚的第二步&#x…

Golang | Leetcode Golang题解之第343题整数拆分

题目&#xff1a; 题解&#xff1a; func integerBreak(n int) int {if n < 3 {return n - 1}quotient : n / 3remainder : n % 3if remainder 0 {return int(math.Pow(3, float64(quotient)))} else if remainder 1 {return int(math.Pow(3, float64(quotient - 1))) * …

学习日志--NAT(Network Address Translation)网络地址转换

目录 一、什么是NAT网络地址转换 二、配置并检查实验环境 三、NAT实现原理 四、NAT实现静态配置一对一 五、NAT实现动态配置一对一 六、PAT端口地址转换一对多 七、NAT优化easyIP的问题 八、NAT网络地址转换PAT多对多转换&#xff08;特殊情况&#xff09; 九、NAT---…

【Harmony OS 4.0】从零开始,快速上手

2019年8月份Harmony OS 1.0&#xff0c; 2020年9月份Harmony OS 2.0 2022年7月份Harmony OS 3.0 2023年3月份Harmony OS 4.0&#xff0c;不兼容 android app 1. 快速上手 1.1 下载并安装 DevEco Studio 1.2 创建项目并初始化 项目 build init 时报错&#xff1a;request to h…

产业经济大脑建设方案(三)

为了加速产业经济的智能化转型&#xff0c;我们建议建立一个全面集成的产业经济大脑系统&#xff0c;该系统结合人工智能、大数据分析和云计算技术&#xff0c;构建数据驱动的决策支持平台。该平台将实时采集和处理产业链各环节的数据&#xff0c;利用智能算法进行深度分析和预…

【C++】C++11新增特性

目录 C11简介&#xff1a; 1、统一的列表初始化&#xff1a; std::initializer_list 2、自动类型推导&#xff1a; auto&#xff1a; decltype&#xff1a; 3、final 和 override final&#xff1a; override&#xff1a; 4、默认成员函数控制&#xff1a; 显示缺省…

网络安全简介(入门篇)

目录 前言 一、什么是网络安全&#xff1f; 二、网络安全的重要性 1、保护数据安全和隐私 2、防止服务中断和数据丢失 3、防止经济损失和法律责任 4、维护公共安全和国家安全 5、提升技术发展和创新 三、网络安全等级保护 1、第一级&#xff08;自主保护级&#xff0…

Java基础-Windows开发环境下Java8和OpenJDK17的自由切换

一、Java语言介绍 Java是一种广泛使用的编程语言和计算平台&#xff0c;具有平台无关性、稳定性和强大的生态系统。随着时间的推移&#xff0c;Java不断演进&#xff0c;推出了多个版本&#xff0c;每个版本都带来了新的功能和性能改进。 1. Java主流版本 Java的主流版本包括…

【排序篇】快速排序的非递归实现与归并排序的实现

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1 快速排序非递归2. 归并排序3.排序算法复杂度及稳定性分析 1 快速排序非递归 利…

Leetcode面试经典150题-14.最长公共前缀

解法都在代码里&#xff0c;不懂就留言或者私信 这个题比较简单&#xff0c;基本上是笔试的第一第二题 class Solution {/**最长公共前缀这种问题个人感觉最重要的是剪枝我理解可以先按照字符串的长度排个序&#xff0c;然后把第一个字符串的长度作为暂时的最长公共前缀的长度…

分享一个基于python爬虫的“今日头条”新闻数据分析可视化系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…