Blob设置type为application/msword将document DOM节点转换为Word(.doc,.docx),并下载到本地

core code 

    // 导出为Word文档downloadWord({ dom, fileName = "", fileType = "doc", l = {} } = {}) {l.show && l.show();// 获取HTML内容const content = dom.innerHTML;// 构建Word文档的HTML结构const html = `<!DOCTYPE html><html><head><meta charset="UTF-8"><title>HTML导出文档</title><style>body { font-family: Arial, sans-serif; line-height: 1.6; }h1, h2, h3 { color: #2c3e50; }table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }th { background-color: #f2f2f2; }ul, ol { margin-left: 20px; margin-bottom: 15px; }</style></head><body>${content}</body></html>`;// 创建Blob对象const blob = new Blob([html], { type: "application/msword" });// 创建下载链接const link = document.createElement("a");link.href = URL.createObjectURL(blob);link.download = `${fileName}.${fileType}`;// 触发下载document.body.appendChild(link);link.click();document.body.removeChild(link);setTimeout(() => {l.close && l.close();}, 1000);},

demo

<template><div :class="$options.name"><h1>公司季度报告</h1><p style="color: #2c3e50"><strong>2023年第三季度</strong></p><h2>执行摘要</h2><p>本季度公司业绩表现强劲,总收入同比增长25%。主要增长点来自新产品线的推出和国际市场的拓展。</p><h2>财务亮点</h2><ul><li>总收入:$1.25亿 (同比增长25%)</li><li>净利润:$2300万 (同比增长18%)</li><li>毛利率:42% (同比提高2个百分点)</li></ul><h2>部门表现</h2><table border="1" style="width: 100%; border-collapse: collapse"><tr><th>部门</th><th>收入</th><th>同比增长</th></tr><tr><td>产品开发</td><td>$6500万</td><td>+32%</td></tr><tr><td>市场销售</td><td>$4500万</td><td>+18%</td></tr><tr><td>客户服务</td><td>$1500万</td><td>+12%</td></tr></table><el-button type="primary" @click="downloadWord" :loading="loading">下载为Word</el-button></div>
</template>
<script>
export default {name: `downloadWord`,data() {return {loading: false,};},methods: {downloadWord(d) {this.$g.downloadWord({dom: this.$el,l: { show: () => (this.loading = true), close: () => (this.loading = false) },});},},
};
</script>
<style lang="scss" scoped>
.downloadWord {box-sizing: border-box;padding: 20px;line-height: normal;& > * {margin-bottom: 10px;&:last-of-child {margin-right: 0;margin-bottom: 0;}}table {td,th {box-sizing: border-box;border: 1px solid #eee;box-sizing: border-box;padding: 20px;}}
}
</style>

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

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

相关文章

无需 Mac,使用Appuploader简化iOS上架流程

作为开发者&#xff0c;尤其是从事跨平台开发的团队&#xff0c;iOS应用上架一直是一项繁琐且挑战重重的工作。尽管Flutter、React Native等框架使得我们可以在不同平台之间共享代码&#xff0c;iOS上架仍然是一个不可忽视的难题。因为它不仅仅涉及代码构建&#xff0c;还涉及到…

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…

Android 实现可拖动的ImageView

Android 实现可拖动的ImageView 代码实现&#xff1a; public class DraggableImageView extends AppCompatImageView {private float lastTouchX;private float lastTouchY;public DraggableImageView(Context context) {super(context);init();}public DraggableImageView(C…

微信小程序中wxs

一、先新建wxs文件subutil.wxs 1、写过滤器 //return class var isClass function(val) {if (val 0) {return grid-item} else if (val 1) {return temperature-error-slot} else if (val 2) {return chargingCycles-error-slot} else {return unrecognized-slot} } 2、…

Nginx攻略

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一位前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&#…

常见系统设计

秒杀系统 前端层&#xff1a; 静态资源缓存&#xff1a;通过CDN缓存商品图片、页面静态HTML&#xff0c;减少回源请求。 请求合并&#xff1a;合并用户频繁刷新的请求&#xff08;如10秒内仅允许一次真实请求&#xff09;。 端侧限流&#xff1a;通过JS或APP端限制用户高频点击…

git撤回commit

最常见的几种撤回方式&#xff1a; 目标使用命令是否保留修改撤回最后一次 commit&#xff0c;但保留代码修改git reset --soft HEAD~1✅ 保留撤回最后一次 commit&#xff0c;并丢弃修改git reset --hard HEAD~1❌ 丢弃撤回某个 commit&#xff0c;但保留后续提交git revert …

docker 安装运行mysql8.4.4

先前一直使用mysql5.7&#xff0c;最新公司新项目&#xff0c;无意翻阅看下5.x版本mysql官方已经不再支持&#xff0c;于是准备选用MySQL8&#xff0c;官方8.4版本是个长期支持版本&#xff0c;选则最新版本8.4.4&#xff0c;如下是MySQL官方对版本支持计划 MySQL版本下载查看地…

[java八股文][MySQL面试篇]索引

索引是什么&#xff1f;有什么好处&#xff1f; 索引类似于书籍的目录&#xff0c;可以减少扫描的数据量&#xff0c;提高查询效率。 如果查询的时候&#xff0c;没有用到索引就会全表扫描&#xff0c;这时候查询的时间复杂度是On如果用到了索引&#xff0c;那么查询的时候&a…

低代码平台的版本管理深度解析

引言 在当今快速发展的软件开发领域&#xff0c;低代码平台凭借其可视化界面和拖拽功能&#xff0c;极大地减少了手动编码的工作量&#xff0c;显著提高了开发效率和质量。它提供了丰富的预构建模块、组件和服务&#xff0c;让开发者能够根据业务需求和逻辑进行组合与配置&…

Springboot项目由JDK8升级至JDK17全过程教程【文末附源码】

1. 前言 最近一直想把我的开源项目maple-boot升级到jdk17版本&#xff0c;然后接入Spring AI。拖延症犯了一直拖拖拖&#xff0c;最近时间空闲较多&#xff0c;开始陆续着手升级。 整个升级过程 计划分为3步。 step1&#xff1a;先将项目升级到jdk17&#xff0c;使用正常ste…

同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡

同步与异步&#xff1a;软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡 概念解析&#xff1a;时空维度的编程范式 在软件开发的宇宙中&#xff0c;同步(Synchronous)与异步(Asynchronous)是两种根本不同的执行模式&#xff0c;它们塑造了程序与时间和空间…

TF-IDF算法的代码实践应用——关键词提取、文本分类、信息检索

回顾&#xff1a;TF-IDF算法详解与实践总结 上一篇文章我们深入剖析了TF-IDF的原理与细节&#xff0c;但实践才是检验真理的唯一标准&#xff01;今天&#xff0c;我们将从“纸上谈兵”转向“实战演练”&#xff1a;通过纯Python手写实现与调用sklearn工具包两种方式&#xff0…

前端面试宝典---事件循环面试题

浏览器进程模型与 JavaScript 执行机制 现代浏览器采用多进程架构&#xff0c;包含浏览器进程、渲染进程、网络进程等多个核心进程。每个标签页会独立创建一个渲染进程&#xff0c;负责页面内容的解析、渲染和执行脚本代码。 JavaScript 的单线程特性 JavaScript 采用单线程…

postman调用接口报错401, Unauthorized, Invalid Token. null解决办法

1、先登录系统&#xff0c;F12找到token并复制 2、postman里选中Authorization,下拉选中选择Bearer Token,把复制好的token黏贴到右侧输入框&#xff0c;如下所示&#xff1a; 3、如果是json格式的参数拷贝到Body中&#xff0c;如下所示&#xff1a; 4、 接口调用成功

C++----剖析list

前面学习了vector和string&#xff0c;接下来剖析stl中的list&#xff0c;在数据库中学习过&#xff0c;list逻辑上是连续的&#xff0c;但是存储中是分散的&#xff0c;这是与vector这种数组类型不同的地方。所以list中的元素设置为一个结构体&#xff0c;将list设计成双向的&…

为什么已经有 Nginx 了,还需要服务网关?

在当前微服务架构中&#xff0c;虽然 Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;但在实际使用中仍然存在诸多局限性。为了满足运维效率、功能统一治理以及与微服务生态集成的需求&#xff0c;通常会在 Nginx 和业务服务之间引入一层基于 Java 实现的服务网关&a…

Kendo UI 中,ViewModel、DataSource 和 Grid的关系。Kendo 框架发起 HTTP 请求

Kendo UI 中&#xff0c;ViewModel、DataSource 和 Grid的关系 在 Kendo UI 中&#xff0c;ViewModel、DataSource 和 Grid 是构建动态数据应用的核心组件&#xff0c;三者协同工作实现数据的绑定、管理和展示。 一、三者关系图解 #mermaid-svg-3lWxu2zWB23wDYEz {font-family…

宇树开源 Qmini 双足机器人,可通过 3D 打印动手制作,使用树莓派作为主控制器

Unitree Qmini 是一款由宇树科技设计并开源的低成本双足机器人&#xff0c;开发者可以完全通过 3D 打印进行复刻。Qmini 专为业余爱好者、教育工作者和研究人员设计&#xff0c;使用户能够快速上手&#xff0c;并以类似乐高的模块化方式组装自己的机器人。该项目为机器人技术提…

解决华为云服务器无法ping通github问题

在push代码到github上的时候&#xff0c;发现显示22端口无法连接&#xff0c;在已经开放了端口&#xff0c;防火墙关闭的情况下仍然无法连接到GitHub。 发现是服务器和github断连&#xff0c;选择 sudo vim /etc/hosts 添加一下代码 # GitHub Start140.82.121.4 gith…