javascript 将table导出 Excel ,可跨行跨列

原文地址:https://www.cnblogs.com/hailexuexi/p/10795887.html


<script language="JavaScript" type="text/javascript">//jQuery HTML导出Excel文件(兼容IE及所有浏览器)function HtmlExportToExcel(tableid,file_name) {var filename =file_name; //'Book'if (getExplorer() == 'ie' || getExplorer() == undefined) {HtmlExportToExcelForIE(tableid, filename);}else {HtmlExportToExcelForEntire(tableid, filename)}}//IE浏览器导出Excelfunction HtmlExportToExcelForIE(tableid, filename) {try {             var curTbl = document.getElementById(tableid);  var oXL;  try{  oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel  }catch(e){  alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");  return false;  }  var oWB = oXL.Workbooks.Add(); //获取workbook对象  var oSheet = oWB.ActiveSheet;//激活当前sheet  var sel = document.body.createTextRange();  sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中  try{sel.select(); //全选TextRange中内容  }catch(e1){e1.description}sel.execCommand("Copy");//复制TextRange中内容  oSheet.Paste();//粘贴到活动的EXCEL中  oXL.Visible = true; //设置excel可见属性  var fname = oXL.Application.GetSaveAsFilename(filename+".xls", "Excel Spreadsheets (*.xls), *.xls");  oWB.SaveAs(fname);  oWB.Close();  oXL.Quit(); } catch (e) {alert(e.description);}}//非IE浏览器导出Excelvar HtmlExportToExcelForEntire = (function() {var uri = 'data:application/vnd.ms-excel;base64,',template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }return function(table, name) {if (!table.nodeType) { table = document.getElementById(table); }var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }document.getElementById("dlink").href = uri + base64(format(template, ctx));document.getElementById("dlink").download = name + ".xls";document.getElementById("dlink").click();}})()function getExplorer() {var explorer = window.navigator.userAgent;//ie if (explorer.indexOf("MSIE") >= 0) {return 'ie';}//firefox else if (explorer.indexOf("Firefox") >= 0) {return 'Firefox';}//Chromeelse if (explorer.indexOf("Chrome") >= 0) {return 'Chrome';}//Operaelse if (explorer.indexOf("Opera") >= 0) {return 'Opera';}//Safarielse if (explorer.indexOf("Safari") >= 0) {return 'Safari';}}
</script>

页面代码

<table id="table2">
<tr>
<td>标题一</td>
<td>标题二</td>
<td>标题三</td>
</tr>
<tr>
<td rowspan="2">文字</td>
<td>咨询</td>
<td>测试</td>
</tr>
<tr>
<td>咨询</td>
<td>测试</td>
</tr>
<tr>
<td>文字</td>
<td>咨询</td>
<td>测试</td>
</tr>
<tr>
<td>文字</td>
<td>咨询</td>
<td>测试</td>
</tr>
<tr>
<td>文字</td>
<td>咨询</td>
<td>测试</td>
</tr>
<tr>
<td>文字</td>
<td>咨询</td>
<td>测试</td>
</tr></table>
<!-- 必须要有这个A标签,不然会报错-->
<a id="dlink"></a><script>function exportExcel(){HtmlExportToExcel('table2','Book');}
</script>
标题一标题二标题三
文字咨询测试
咨询测试
文字咨询测试
文字咨询测试
文字咨询测试
文字咨询测试

导出截图展示:
在这里插入图片描述

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

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

相关文章

[css] css怎么更改表单的单选框或下拉框的默认样式?

[css] css怎么更改表单的单选框或下拉框的默认样式&#xff1f; 下拉框select可以通过appearance:none去除默认样式&#xff0c;然后进行自定义&#xff0c;但是option标签不能通过CSS自定义&#xff0c;所以最佳方案是自定义标签重写select单选框隐藏input标签&#xff0c;自定…

wampserver 搭建 php环境 运行方法

大家好&#xff0c;我是烤鸭&#xff1a;今天分享的是如何用wamp 运行 php代码。1. wampserver下载&#xff1a;下载地址&#xff1a;https://sourceforge.net/projects/wampserver/files/WampServer%203/WampServer%203.0.0/Addons/Php/wampserver3_x64_addon_php7.2.7.exe…

Mysql数据库查询当前操作的数据库名

查询数据库名&#xff1a; select database()查询表结构&#xff1a; select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME表名 and table_schema (select database())

redis的学习使用,第二章

在IDEA里面使用redis&#xff0c;使用架包 jedis-2.4.2.jar 1 public class Main {2 3 public static void main(String[] args) {4 Jedis jedis new Jedis("127.0.0.1",6379);5 //string类型6 jedis.set("java","aga…

[css] 你了解css3的currentColor吗?举例说明它的作用是什么?

[css] 你了解css3的currentColor吗&#xff1f;举例说明它的作用是什么&#xff1f; currentColor是 color 属性的值&#xff0c;具体意思是指&#xff1a;currentColor关键字的使用值是 color 属性值的计算值。如果currentColor关键字被应用在 color 属性自身&#xff0c;则相…

java php des加密 byte数组16进制 DESTools

大家好&#xff0c;我是烤鸭:今天分享的是java 和 php des 加密。因为接口对接&#xff0c;难免不同语言&#xff0c;加密又是必不可少的。作为接口的提供方&#xff0c;必须把加密规则写好&#xff0c;最好有不同语言的加密demo。1. java版本的des加密解密工具类DESTools.j…

BDD框架之Cucumber研究

BDD框架之Cucumber研究 引用链接&#xff1a;http://kongqingyun123.blog.163.com/blog/static/6377283520134158437813/ Cucumber是BDD&#xff08;行为驱动开发&#xff09;中成熟的一个框架&#xff0c;官方网址: http://cukes.info/1、cucumber安装1、安装ruby2、gem insta…

Oracle修改字段的顺序

一&#xff1a;简单粗暴 1,Oracle: create table CFORM_COULUMN_2 as &#xff08;select 字段A,字段B from CFORM_COULUMN);2,Sqlserver select 字段A,字段B.... into CFORM_COULUMN_2 from CFORM_COULUMN二&#xff1a;通过SYS数据库更新字段顺序 1&#xff0c;查询表…

[css] 怎么去掉点击a链接或者图片出现的边框?

[css] 怎么去掉点击a链接或者图片出现的边框&#xff1f; a{text-decoration:none} img{border:0 none}个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

springboot 2.x tomcat war包部署 localhost-startStop-1 启动卡顿卡死

大家好&#xff0c;我是烤鸭&#xff1a; 关于springboot war包部署tomcat。环境&#xff1a;springboot 2.0.3.RELEASEapache-tomcat-8.5.321. 修改pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns:xsi"http://www.w3.org…

高可用Eureka注册中心配置说明(双机部署)

目 录 1. 高可用EureKa注册中心示意图 2. Eureka实例相互注册配置 3. 微服务注册到Eureka配置 4. 启动步骤及配置成功检查 5. 说明事项 1. 高可用EureKa注册中心示意图 Spring Cloud的Eureka Server的高可用实际上就是将自己作为服务向其他服注册中心注册自己&#xff0c;形成…

sql 把特定数据排在最前面

第一法】 select * from table where nameD UNION ALL select * from table where name<>D 第二法】SELECT CASE WHEN [name]D THEN 0 ELSE 1 END FLAG,* FROM TABLE order by flag asc

[css] css的linear-gradient有什么作用呢?

[css] css的linear-gradient有什么作用呢&#xff1f; 概念&#xff1a;线性渐变,向下/向上/向左/向右/对角方向,为了创建一个线性渐变&#xff0c;你必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时&#xff0c;你也可以设置一个起点和一个方向&#xff…

elasticsearch 6.x (四) 单一文档 API 介绍和使用 index和get API

大家好&#xff0c;我是烤鸭&#xff1a;今天分享的是官网6.x 单一文档(Single document APIs)APIs。本文这是部分翻译&#xff0c;如果想看全部的&#xff0c;还是建议阅读官方api。链接&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/docs…

Dockerfile语法

Dockerfile 语法示例 Dockerfile语法由两部分构成&#xff0c;注释和命令参数 # Line blocks used for commentingcommand argument argument ..一个简单的例子&#xff1a; # Print "Hello docker!"RUN echo "Hello docker!"Dockerfile 命令 Dockerfile有…

[css] 会引起Reflow和Repaint的操作有哪些?

[css] 会引起Reflow和Repaint的操作有哪些&#xff1f; 页面布局和几何信息(比如&#xff1a;增加删除dom&#xff0c;改变元素位置或者尺寸等)发生改变时&#xff0c;会触发Reflow。 给dom节点添加样式&#xff0c;会触发Repaint。 触发Reflow一定会引起Repaint&#xff0c;触…

Centos7离线安装Mysql8

一&#xff0c;下载tar包 1&#xff0c;直接下载&#xff1a;https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar 2&#xff0c;百度网盘&#xff1a;https://pan.baidu.com/s/1V180rx0FVFuUOrnPMqrVpQ 提取码&#xff1a;08jx 二&…

[css] 你有用过clip-path吗?说说你对它的理解和它都有哪些运用场景?

[css] 你有用过clip-path吗&#xff1f;说说你对它的理解和它都有哪些运用场景&#xff1f; clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域它的值可以为以下几种: 用 表示剪切元素的路径: 一种形状&#xff0c;其大小和位置由<几何盒>值定义。如果没有…

elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API

大家好&#xff0c;我是烤鸭&#xff1a;今天分享的是官网6.x 单一文档(Single document APIs)APIs。本文这是部分翻译&#xff0c;如果想看全部的&#xff0c;还是建议阅读官方api。链接&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/docs…

Linux 编译安装BIND

下载网址&#xff1a;www.isc.org 首选需要安装开发环境&#xff0c;包括openssl等开发包&#xff1b; 解压文件 tar -zxvf bind*.tar.gz 创建named使用的系统用户 groupadd -g 53 -r named useradd -u 53 -r named 编译安装 …