js一键导出Excel
1 <div class="container"> 2 <table id="backViewTable" class="table table-hover table-sm table2excel"> 3 <tr> 4 <td>#</td> 5 <td>ID</td> 6 <td>姓名</td> 7 <td>座位号</td> 8 <td>操作</td> 9 </tr> 10 <tr> 11 <th scope="row">1</th> 12 <td>1234</td> 13 <td>李文斐</td> 14 <td>2楼 3排 34号 </td> 15 <td><input class="btn-primary" type="button" value="删除"/></td> 16 </tr> 17 <tr> 18 <th scope="row">2</th> 19 <td>2345</td> 20 <td>lwf</td> 21 <td>1楼 3排 34号</td> 22 <td><input class="btn-primary" type="button" value="删除"/></td> 23 </tr> 24 <tr> 25 <th scope="row">3</th> 26 <td>3456</td> 27 <td>Lee</td> 28 <td>1楼 3排 12号</td> 29 <td><input class="btn-primary" type="button" value="删除"/></td> 30 </tr> 31 </table> 32 <button class="btn btn-primary btn-sm" onclick="tablesToExcel(['backViewTable'], ['ProductDay1'], 'TestBook.xls', 'Excel')">Export to Excel</button> 33 </div>
JS:
1 <script>
2 var tablesToExcel = (function() {
3 var uri = 'data:application/vnd.ms-excel;base64,'
4 , tmplWorkbookXML = '<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">'
5 + '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>'
6 + '<Styles>'
7 + '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>'
8 + '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>'
9 + '</Styles>'
10 + '{worksheets}</Workbook>'
11 , tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>'
12 , tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>'
13 , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
14 , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
15 return function(tables, wsnames, wbname, appname) {
16 var ctx = "";
17 var workbookXML = "";
18 var worksheetsXML = "";
19 var rowsXML = "";
20
21 for (var i = 0; i < tables.length; i++) {
22 if (!tables[i].nodeType) tables[i] = document.getElementById(tables[i]);
23
24 // 控制要导出的行数
25 for (var j = 0; j < tables[i].rows.length; j++) {
26 rowsXML += '<Row>';
27
28 // 控制导出的列数(在本例中,最后一列为button,导出的文件会出错,所以导出到倒数第二列
29 for (var k = 0; k < tables[i].rows[j].cells.length-1; k++) {
30 var dataType = tables[i].rows[j].cells[k].getAttribute("data-type");
31 var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style");
32 var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value");
33 dataValue = (dataValue)?dataValue:tables[i].rows[j].cells[k].innerHTML;
34 var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula");
35 dataFormula = (dataFormula)?dataFormula:(appname=='Calc' && dataType=='DateTime')?dataValue:null;
36 ctx = { attributeStyleID: (dataStyle=='Currency' || dataStyle=='Date')?' ss:StyleID="'+dataStyle+'"':''
37 , nameType: (dataType=='Number' || dataType=='DateTime' || dataType=='Boolean' || dataType=='Error')?dataType:'String'
38 , data: (dataFormula)?'':dataValue
39 , attributeFormula: (dataFormula)?' ss:Formula="'+dataFormula+'"':''
40 };
41 rowsXML += format(tmplCellXML, ctx);
42 }
43 rowsXML += '</Row>'
44 }
45 ctx = {rows: rowsXML, nameWS: wsnames[i] || 'Sheet' + i};
46 worksheetsXML += format(tmplWorksheetXML, ctx);
47 rowsXML = "";
48 }
49
50 ctx = {created: (new Date()).getTime(), worksheets: worksheetsXML};
51 workbookXML = format(tmplWorkbookXML, ctx);
52
53 // 查看后台的打印输出
54 console.log(workbookXML);
55
56 var link = document.createElement("A");
57 link.href = uri + base64(workbookXML);
58 link.download = wbname || 'Workbook.xls';
59 link.target = '_blank';
60 document.body.appendChild(link);
61 link.click();
62 document.body.removeChild(link);
63 }
64 })();
65 </script>
转载自:https://blog.csdn.net/liwenfei123/article/details/78719686
js一键导出Excel的更多相关文章
- js实现一键导出Excel
演示地址:https://xibushijie.github.io/static/ExportToExcel.html <!DOCTYPE html> <html lang=&quo ...
- 【转】js 中导出excel 较长数字串会变为科学计数法
[转]js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串 ...
- 多个浏览器下应用前端JS实现一键导出excel表
自己试验了几种方法,找到一种较为全面的一种方式一键输出Excel表格,代码如下 <!DOCTYPE html> <html> <head lang="en&qu ...
- js前端导出excel:json形式的导出
第一中形式的导出:主要是表头对应主体数据,json形式的导出 js库文件名称 : table2excel.js这个js库文件是网上找的,并且自己根据自己业务需求把内容改了一下复制到 table2exc ...
- js前端导出excel
此例子是利用html特性,纯前端导出excel,样式不好看,兼容主流浏览器. var tableid = jQuery(this).closest("div.tab-label-wrap&q ...
- js原生导出excel和csv
严格意义来说并不是真正的excel文件,只是可以用excel打开查看而已,实际上的格式是逗号分隔文件即csv文件. 这里有几个坑要说一下: 不加Unicode的utf8头部标识excel打开文件会 ...
- js导入导出excel
导入: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Unti ...
- js 中导出excel 较长数字串会变成科学计数法
在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...
- js 中导出excel 较长数字串会变成科学计数法(转载)
在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...
随机推荐
- [bzoj4520][Cqoi2016]K远点对_KD-Tree_堆
K远点对 bzoj-4520 Cqoi-2016 题目大意:已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对. 注释:$1\le n\le 10^5$,$1\le k\le 100$,$k\l ...
- Charm Bracelet-POJ3624(01背包)
http://poj.org/problem?id=3624 Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- 基于Token的身份验证——JWT(转)
本文转自:http://www.cnblogs.com/zjutzz/p/5790180.html 感谢作者 初次了解JWT,很基础,高手勿喷.基于Token的身份验证用来替代传统的cookie+se ...
- ViewFlipper实现ViewPager的页面切换效果
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- AngularJS $q 和 $q.all 单个数据源和多个数据源合并(promise的说明)
这篇文章讲的不错, angular $q 和 promise!! -------------------------------------------------------------- 通过调 ...
- 1064 - You have an error in your SQL syntax问题解决
新建表sql语句例如以下,在navicat for mysql 中执行,报错. CREATE TABLE `t_article`( `bh` bigint(20) NOT NULL PRIMARY K ...
- C++学习之构造函数中的异常处理
构造函数中可不可以抛出异常?当然可以.从语法上来说,是可以的:从实际情况来看,现在的软件系统日渐庞大和复杂,很难保证 Constructor 在执行过程中完全不发生一点异常. 那么,如果构造函数中抛出 ...
- WebSphere报错指南
看了下面的文章,泥坑会叫我标题党,没错我就是啊. 1.was日志路径 ${WebSphere根路径}/AppServer/profiles/AppSrv01/logs/,比如说我的路径就是/opt/I ...
- docker 默认用户和密码
windows 下安装docker依赖boot2docker镜像默认用户和密码 标签: dockerroot密码 2017-03-26 14:13 2796人阅读 评论(0) 收藏 举报 分类: 虚 ...
- JspSmartUpload 实现上传
2.save 作用:将所有上传文件保存到指定文件夹下,并返回保存的文件个数. 原型:public int save(String destPathName) 和public int save(St ...