前端页面导出word

news/2024/12/14 9:22:03/

html-docx-js bug:
vite使用html-docx.js会报错,点击下载上方文件替换即可

正文

npm install html-docx-js -S
npm install file-saver -S
<template><div id="managerReport">word内容......</div>
</template><script><a-button type="primary" @click="wordDownload"> 导出 </a-button>word">function wordDownload() {word">const htmlContent = document.getElementById('managerReport');// 查找并修改表格的样式word">const tables = htmlContent.querySelectorAll('table');tables.forEach((table) => {table.style.borderCollapse = 'collapse';table.style.width = '100%';table.querySelectorAll('td, th').forEach((cell, index) => {word">if (cell) {cell.style.border = '1px solid black';cell.style.padding = '8px';}});});//去除<br>标签,内容加到<div>标签内word">const brs = htmlContent.querySelectorAll('br');brs.forEach((br) => {word">const parent = br.parentNode; //获取父节点word">let textNode = br.previousSibling; //前一个兄弟节点// while (textNode && textNode.nodeType !== Node.TEXT_NODE) {//   textNode = textNode.previousSibling;        //循环查找,直到找到一个文本节点或没有更多的兄弟节点// }word">if (textNode && textNode.nodeType === Node.TEXT_NODE && textNode.textContent.trim()) {//找到文本节点,并且内容不为空word">const div = document.createElement('div');div.textContent = textNode.textContent;parent.insertBefore(div, br);parent.removeChild(textNode); //移除原有的文本节点,避免内容重复} word">else {word">const div = document.createElement('div');div.innerHTML = '&nbsp;';parent.insertBefore(div, br);}parent.removeChild(br);});word">const htmlContentCopy = htmlContent.cloneNode(true);word">const imgs = htmlContentCopy.querySelectorAll('img');imgs.forEach((img) => {word">let docxWidth = 620;word">if (img.width > docxWidth) {img.height = (img.height * docxWidth) / img.width;img.width = docxWidth;}});// 将HTML转换为Blob对象word">const blob = asBlob(htmlContentCopy.innerHTML);saveAs(blob, `aaaaa.docx`);}</script>

http://www.ppmy.cn/news/1554980.html

相关文章

边界层气象:脉动量预报方程展开 | 湍流脉动速度方差预报方程 | 平均湍流动能收支方程推导

写成分量形式 原始式子&#xff1a; ∂ u i ′ ∂ t u ‾ j ∂ u i ′ ∂ x j u j ′ ∂ u ‾ i ∂ x j u j ′ ∂ u i ′ ∂ x j − 1 ρ ‾ ⋅ ∂ p ′ ∂ x i g θ v ′ θ ‾ v δ i 3 f ϵ i j 3 u j ′ v ∂ 2 u i ′ ∂ x j 2 ∂ ( u i ′ u j ′ ‾ ) ∂ x j…

satoken 后端获取用户id的原理是啥 用了前端传的那个参数

在 Sa-Token 框架中&#xff0c;后端获取用户 ID 的过程与前端传递的参数密切相关。Sa-Token 是一个基于 JWT 的轻量级权限管理框架&#xff0c;主要用于解决权限控制、登录管理等问题。具体来说&#xff0c;后端如何获取用户 ID&#xff0c;取决于你前后端如何设计以及 Sa-Tok…

vue项目通过appendChild()函数向页面上追加组件

前言&#xff1a; 此篇文章自己结合项目和文档自己理解的&#xff0c;作用于往后遇见此类开发需求时参考。 正文&#xff1a; 1、createApp() 创建一个应用程序实例 function createApp(rootComponent: Component, rootProps?: object): App 第一个参数是根组件。第二个可选…

Scratch节日作品 | 圣诞节礼物——体验节日的温馨与编程的乐趣! ❄️

今天为大家推荐一款充满节日氛围的Scratch作品——《圣诞礼物》&#xff01;这款程序不仅带来了雪花飘落、圣诞老人和麋鹿的经典场景&#xff0c;还通过编程的形式让小朋友们体验到收到礼物的喜悦。通过这款游戏&#xff0c;小朋友们能学习编程知识、了解圣诞文化&#xff0c;同…

顺序表的使用,对数据的增删改查

主函数&#xff1a; 3.c #include "3.h"//头文件调用 SqlListptr sql_cerate()//创建顺序表函数 {SqlListptr ptr(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULLptr){printf("创建失败\n");return NULL;//如果没有申请成功&#xff…

VS2022 ASP.NET core Web API 示例代码解释

0. 项目结构 在创建ASP.NET Core Web API项目后&#xff0c;项目的基本结构如下&#xff1a; MyWebApiProject │ Controllers │ └── WeatherForecastController.cs │ Program.cs │ WeatherForecast.cs │ appsettings.json │ ...1. Program.cs 这个文件…

uni-app开发App注意事项

技术选择 分包目前不支持Vue3 个人选择考虑&#xff1a; 1、vue2由于官方不维护了&#xff0c;所以uniapp也不维护了。 2、vue3使用proxy&#xff0c;不支持ios9。 3、目前插件市场中 vue2开发的插件占比更大。 4、如果app页面较多&#xff0c;需要开启分包&#xff0c;但…

Ubuntu中iptables默认是开启的吗

不&#xff0c;Ubuntu 中 iptables 默认不是开启的。 虽然 Ubuntu 系统默认安装了 iptables 软件包&#xff08;你可以通过 dpkg -l iptables 或 which iptables 命令来验证&#xff09;&#xff0c;但这并不意味着 iptables 规则已经生效。实际上&#xff0c;iptables 的规则…