导出效果

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<table id="table" border="1">
<tr style="height:50px;">
<th style="width:100px;color:red;">姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
<tr>
<td>小明</td>
<td>男</td>
<td>16</td>
</tr>
<tr>
<td>小红</td>
<td>女</td>
<td>17</td>
</tr>
<tr>
<td>小张</td>
<td>男</td>
<td>17</td>
</tr>
</table>
<a id="down">点击下载excel</a>
<script>
let html = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
${document.getElementById('table').outerHTML}
</body>
</html>`
let blob = new Blob([html],{ type: 'application/vnd.ms-excel'});
let a = document.getElementById('down');
a.href = URL.createObjectURL(blob);
a.download = '测试excel下载'
</script>
</body>
</html>

注意事项

  · 只能写行内样式。

  · 有一部分css无效,目前我发现无效的有flex、margin,尽量使用最普通最老的css写法,不要使用css3的样式,用&nbsp;来代替需要margin的地方;

  · 因为有些样式不支持,导出的excel和你写出来的界面是不会完全一致的,要打印出来测试

  · 如果在vue中使用建议不要使用document.getElementB…来获取dom,应该直接使用ref来获取。

扩展使用

(此节也适用未接触过前端的人)

首先键入  F12  打开控制台,然后键入  CTRL + SHIFT + C  选择元素,将光标移动到页面上的表格,使高亮区域包裹整个表格,这里拿Element-UI Table举例。

找到图片标出的 <table> 标签,鼠标右键,选择Edit as HTML,在 "<table " 后面添加 " id="table2xls "(注意空格)

切换到控制台

在空白处复制以下代码并键入  ENTER  :

(function() {
let html = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
${document.getElementById('table2xls').outerHTML}
</body>
</html>`
let blob = new Blob([html],{ type: 'application/vnd.ms-excel'});
let a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = `TableExcel${+new Date()}`
a.click()
}())

开始下载:

下载成功:

用这个方法导出其他标签也是可以的,比如上图导出的.XLS文件就不包括表头,是因为ELEMENT-UI的表格将表头放在了 <div> 另一个table中。

通过#testt导出表格,导出结果如下:

将代码块中 blob type 的值改为 " application/msword "

将标签导出为带格式.DOC的Word文件

————————————————

原文链接:https://blog.csdn.net/weixin_35958891/article/details/103381012

本文部分转自上述链接,感谢友友提供的思路。

- END -

JS019. 原生JS使用new Blob()实现带格式导出Word、Excel(提供无编程基础将页面上表格导出到本地的方法)的更多相关文章

  1. js基础进阶--图片上传时实现本地预览功能的原理

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 最近在项目上加一个图片裁剪上传的功能,用的是cropper插件,注意到选择本地图片后就会有预览效果,这里整理一下这种预览效 ...

  2. 原生js封装ajax:传json,str,excel文件上传表单提交

    由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...

  3. 原生js实现分页效果(带实例)

    小小插件(静态分页) 效果图: 首先实现简单功能: <!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  4. PHPcms编辑器如何粘贴带格式的word文档

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  5. 网页内容导出word/excel的js代码

    IE设置: 工具-> Internet选项-> 安全->自定义级别-> 对没有标记安全级别的ActiveX控件进行初始化  设为启用! 1.导出word //指定区域导出到Wo ...

  6. JS 监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求: 那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...

  7. JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

    $(function(){ pushHistory(); window.addEventListener("popstate", function(e) { alert(" ...

  8. Freemarker导出带格式的word的使用

    1.新建一个doc文档

  9. 原生JS实现"旋转木马"效果的图片轮播插件

    一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...

随机推荐

  1. a href="tel" 拨打电话

    电话号码是固定的: <a href="'tel:10086">10086</a> 电话号码是动态获取时: 走默认的方式失败 <a href=" ...

  2. ssrf漏洞随笔

    一.ssrf漏洞定义 SSRF漏洞:SSRF是一 种由攻击者构造请求,由服务端发起请求的安全漏洞.一般情况下,ssrf攻击的目标是外网无法访问的内部系统 SSRF漏洞( 服务器端请求伪造 )也被称为跨 ...

  3. SpringBoot | 4.1 SpringMVC的自动配置

    目录 前言 1. SpringMVC框架的设计与流程 1.1 SpringMVC框架的示意图 1.2 SpringMVC的组件流程 2. *自动配置的源码分析 2.1 导入Web场景启动器 2.2 找 ...

  4. zookeeper的集群搭建

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  5. MySQL学习03(MySQL数据管理)

    MySQL数据管理 外键 外键概念 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个关系之间的相关联系.以另一个关系的外键作主关键字的表被称为主 ...

  6. Redis-03-集群

    集群介绍 Redis Cluster 是 redis 的分布式解决方案, 在3.0版本正式推出,当遇到单机.内存.并发.流量等瓶颈时,可以采用Cluster架构方案达到负载均衡目的 Redis Clu ...

  7. 页面模型 PageModel

    Razor页面中的程序处理方法 OnGet 和 OnGetAsync是同样的处理程序,因此不能共存,否则会报错. 视图数据 ViewData 视图数据是从页面模型向内容页面传递数据的容器.视图数据是以 ...

  8. 【AIOT】智能感知--人

    From: https://liudongdong1.github.io/ 1. 人体存在感知 目标:检测环境中的所有人体,标记出每个人体的坐标位置:不限人体数量,适应中低空斜拍.人体轻度遮挡.截断等 ...

  9. Thread类中yield方法

    Yield方法可以暂停当前正在执行的线程对象,让其他有相同优先级的线程执行.它是一个静态方法而且只保证当前线程放弃CPU占用而不能保证其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂 ...

  10. C# 获得文件的执行路径的方法

    var path = System.Reflection.Assembly.GetEntryAssembly().Location;