测试兼容IE google 火狐浏览器。看到的朋友也许你某一天也会需要。

//obj是table表格外面嵌套div id
function saveCode(obj) {
try {
var strHTML = obj.innerHTML;
if (navigator.userAgent.indexOf("MSIE") > 0) //IE浏览器
{
var winname;
winname = window.open("ToExcel", "_blank", 'top=10000');
winname.document.open('text/html', 'replace');
winname.document.write("<style>");
winname.document.write("table{border:solid 1px #000;text-align:center;border-collapse:collapse; border-spacing:0;}");
winname.document.write("table td{border:solid 1px #000;text-align:center;}");
winname.document.write("table th{border:solid 1px #000;text-align:center;}");
winname.document.write("</style>");
winname.document.write(strHTML);
winname.document.execCommand('SaveAs', '', 'excel.xls');
document.execCommand("ClearAuthenticationCache");
winname.close();
} else { //Chrome 火狐 浏览器
var str = getTblData("datalist", this); //"博客, 域名Blog \r\n 2Sjolzy.cn, 3.1;2 \r\n 123123,123123 \r\n 123,123"; 测试数据
var uri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(str);//要编码 //创建a标签模拟点击下载
var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download = "excel.csv";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
} catch (e) {
alert(e.Message);
return false;
}
return false;
} function getTblData(inTbl, inWindow) {
var rows = 0;
var tblDocument = document;
tblDocument = eval(inWindow).document;
var curTbl = tblDocument.getElementById(inTbl);
var outStr = "";
if (curTbl != null) {
for (var j = 0; j < curTbl.rows.length; j++) {
for (var i = 0; i < curTbl.rows[j].cells.length; i++) { if (i == 0 && rows > 0) {
outStr += ",";// \t";
rows -= 1;
} outStr += curTbl.rows[j].cells[i].innerText + ",";//\t";
if (curTbl.rows[j].cells[i].colSpan > 1) {
for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {
outStr += ",";// \t";
}
}
if (i == 0) {
if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {
rows = curTbl.rows[j].cells[i].rowSpan - 1;
}
}
}
outStr += "\r\n";
}
} else {
outStr = null;
alert(inTbl + "不存在 !");
}
return outStr;
}

对应obj 和datalist 的html结构如图:

注意的是 getTblData里面构建数据源的时候","号是换行符 如果文字里面有,号 需要替换。

解决汉字乱码问题

var uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);

数据需要 BOM 头

BOM 头就是一个文档标记,标识 Unicode 文件

最新文章

  1. BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
  2. WPF 中使用MVVM模式后,找回ListBox中的ListBoxItem元素
  3. iOS GCD中的dispatch_group
  4. 让我们的svg起飞,兼容ie9的神器
  5. CentOS网络配置详解
  6. adb devices 显示error
  7. java爬虫实战
  8. js倒计时 重发 效果
  9. VBA 开发学习--基础语法3
  10. 51cto大数据培训路线
  11. Nexpose
  12. Lustre文件系统测试——obdfilter-survey测试
  13. 【1】ArcGIS API for JavaScript 4.5/4.6 本地部署
  14. Cup(二分)
  15. python针对端口11211进行全网收集
  16. 《Unity3D 实战核心技术详解》书中关于矩阵的错误
  17. 让wampserver2.5.exe支持sql server数据库的方法
  18. pyautogui_pdf内容提取到excel内_3
  19. ubuntu安装python-mysqldb
  20. 基于MATLAB的腐蚀膨胀算法实现

热门文章

  1. 用eclipse导入jar包并使其在一个文件夹下
  2. asp.net core 笔记
  3. PHP Warning: date() [function.date]: It is not safe to rely on the system&#39;s timezone
  4. 网站为什么要做SEO
  5. ROS之VPN服务器设置教程.
  6. JSON/XML序列化与反序列化(非构造自定义类)
  7. gspx请求周期(备忘)
  8. 如何给wordpress外部链接自动添加nofollow
  9. cocos布局分析
  10. 【PHP面向对象(OOP)编程入门教程】12.重载新的方法(parent::)