前端实现word文档的生成和下载

server/2025/3/6 21:07:32/
htmledit_views">

一  前提

        应项目需求,需要把前端生成word文档并下载。此项目我使用的是vue框架。本篇文章主要是记录自己在实现中遇到的问题以及最终使用方式。

二 实现方式     

        我的方式是将 html 转为word文档并下载。现在网上最常见的是使用 html-docx-js 配合 file-saver 使用,但是我在使用的时候报错。一查,是因为html-docx-js构建出来的代码包括with语句,而在主流的现代框架中(vue/react/angular)中使用不了(它们目前的构建工具都默认启用了严格模式)。而后,我又看到一个 html-docx-js-typescript 库,便试了一下。对于简单的word还是可以的。原文链接如下:插件推荐 | html文本转docx文档 - 简书

三 开始使用

1.安装依赖

  • yarn add html-docx-js-typescript
  • yarn add file-saver
  • yarn add @types/file-saver

2.使用 

// 导入方法
import {saveAs} from "file-saver";
import {asBlob} from 'html-docx-js-typescript';// 下载
const handleOk = async () => {
// htmlId 是需要下载的内容的容器IDconst content = document.getElementById('htmlId')?.innerHTML;if (content) {try {const htmlString = `<!DOCTYPE html><html lang="en"><head><meta content="text/html;charset=utf-8" /></head><body><div>${content}</div></body></html>`;asBlob(htmlString).then((data): any => {saveAs(data, '下载word.docx') // 保存为docx文件});} catch (error) {console.log("文件下载失败:",error);}}
};// 这是要下载的文档内容,根据自己的需求写即可。放到自己的代码中。
<div id="htmlId" style="color: red;font-size: 20px"><div>这是测试的文档内容</div>
</div>

效果如下:

四 其他方式(docx.js)

        后来,我发现,docx.js 好像也可以进行word文件生成和下载。只不过这不是将html转为word,而是自己根据实际内容利用docx.js 中特定的方式去生成word通过编程方式创建 Word 文档)。并且docx.js功能更强大,可以生成各种复杂格式的文档,比如:支持 表格、图片、页眉、页脚等元素的添加。有兴趣的同学可以试一下:

        具体使用方式见docx.js 官网:Getting started with React Grid component | Syncfusion


http://www.ppmy.cn/server/172973.html

相关文章

flask 安装后不能识别

Windows 11 上&#xff0c;系统能够识别 Python 但无法识别 Flask, 使用python -m flask 方式可以 但是很麻烦 百度查询 认为 环境变量未配置 即使 Flask 已正确安装&#xff0c;如果其路径未添加到系统的环境变量中&#xff0c;系统也无法识别 flask 命令。可以通过以下步骤将…

Mysql中使用sql语句生成雪花算法Id

?? 简介&#xff1a;java系列技术分享(??持续更新中…??) ?? 初衷:一起学习、一起进步、坚持不懈 ?? 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正?? ?? 希望这篇文章对你有所帮助,欢迎点赞 ?? 收藏 留言 ?? ?? 更多文章请点击 [这里是图片002]…

【SegRNN 源码理解】PMF的多步并行预测

位置编码 elif self.dec_way "pmf":if self.channel_id:# m,d//2 -> 1,m,d//2 -> c,m,d//2# c,d//2 -> c,1,d//2 -> c,m,d//2# c,m,d -> cm,1,d -> bcm, 1, dpos_emb torch.cat([self.pos_emb.unsqueeze(0).repeat(self.enc_in, 1, 1),self.cha…

计算机网络:Socket网络编程 Udp与Tcp协议 第一弹

目录 1.IP地址和端口号 1.1 如何通信 1.2 端口号详解 1.3 理解套接字socket 2. 网络字节序 3. socket接口 3.1 socket类型设计 3.2 socket函数 3.3 bind函数 4. UDP通信协议 4.1 UDP服务端类 4.2 Udp服务类InitServer函数 4.3 Udp服务类Start函数 4.4 Udp服务主函…

windows环境执行composer install出错

现在的项目环境都是要求比较新的版本&#xff0c;就比如今天部署测试一个新框架遇到了下面这些问题&#xff0c;报错原因有以下几点&#xff1a; PHP版本低了&#xff0c;现在的新项目都是要求PHP8以上版本&#xff1b;指令废弃&#xff0c;配置文件禁用即可&#xff1b;切换P…

【网络安全】API安全防护完整指南

文章目录 API安全为什么 API 安全性重要?API 安全性与通用应用程序安全性的区别传统 Web 安全的主要特征API 安全的关键特征OWASP API 前 10 大安全威胁API1:2019 - 破坏对象级授权(Broken Object-Level Authorization)API2:2019 - 破坏用户身份验证(Broken User Authentic…

(二 十 二)趣学设计模式 之 备忘录模式!

目录 一、 啥是备忘录模式&#xff1f;二、 为什么要用备忘录模式&#xff1f;三、 备忘录模式的实现方式四、 备忘录模式的优缺点五、 备忘录模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;…

C++----const关键字与constexpr关键字

目录 一、const关键字/限定符 1.1 基本的const变量【const修饰变量&#xff08;包括函数参数、函数返回值&#xff09;】 1.2 const指针【分为指针常量&#xff08;指向常量的指针&#xff09;和常量指针】 1.2.1 指向常量的指针【const int*p;】 1.2.2 常量指针【int* con…