转自:http://www.cnblogs.com/dengnan/p/3990211.html

通过自己实际测试有以下几种方法

方法一通过a标签实现,把要导出的数据用“\n”和“,”拼接成一个字符串,然后把字符串放到href中,这种方法只支持chrome,firefox等非ie浏览器

html页面代码如下

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="oscar999">
  <title>导出CSV文件</title>
<script>
function exportCsv(obj){
//title ["","",""]
var title = obj.title;
//titleForKey ["","",""]
var titleForKey = obj.titleForKey;
var data = obj.data;
var str = [];
str.push(obj.title.join(",")+"\n");
for(var i=0;i<data.length;i++){
var temp = [];
for(var j=0;j<titleForKey.length;j++){
temp.push(data[i][titleForKey[j]]);
}
str.push(temp.join(",")+"\n");
}
var uri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(str.join(""));
var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download = "export.csv";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
window.onload = function(){
document.getElementById("test").onclick = function(){
exportCsv({
title:["第一列","第二列"],
titleForKey:["num1","num2"],
data:[
{
num1:"123",
num2:"fff"
},{
num1:"123",
num2:"fff"
},{
num1:"123",
num2:"fff"
}]
});
}
}
</script>
</head>
<body>
<a id="test" href="javascript:;">导出</a>
</body>
</html>

第二种方法通过ActiveXObject("Excel.Application")实现,这种方法只支持ie浏览器

html页面代码如下

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IE导出CSV</title>
<script>
window.onload = function(){
function exportCsv(){
//创建AX对象excel
var oXL = new ActiveXObject("Excel.Application");
//获取workbook对象
var oWB = oXL.Workbooks.Add();
//激活当前sheet
var oSheet = oWB.ActiveSheet;
var Lenr = [["标题一","标题二","标题三"],["4","5","6"],["1","2","3"]];
for (i = 0; i < Lenr.length; i++) {
for (j = 0; j < Lenr[i].length; j++) {
oSheet.Cells(i + 1, j + 1).value = Lenr[i][j];
}
}
//设置excel可见属性
oXL.Visible = true;
}
document.getElementById("J_export").onclick = function(){
exportCsv();
}
}
</script>
</head>
<body>
<a href="javascript:;" id="J_export">导出</a>
</body>
</html>

第三种方法也是目前项目中正在使用的

通过使用FileSave.js实现FileSave.js插件https://github.com/eligrey/FileSaver.js/

html页面代码如下

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IE导出CSV</title>
<script src="FileSaver.js"></script>
<script>
window.onload = function(){
function exportCsv2(){
//Excel打开后中文乱码添加如下字符串解决
var exportContent = "\uFEFF";
var blob = new Blob([exportContent+"标题,标题,标题\n1,2,3\n4,5,6"],{type: "text/plain;charset=utf-8"});
saveAs(blob, "hello world.csv");
}
document.getElementById("J_export").onclick = function(){
exportCsv2();
}
}
</script>
</head>
<body>
<a href="javascript:;" id="J_export">导出</a>
</body>
</html>

最新文章

  1. 学习CSS3动画(animation)
  2. 感恩回馈,《ASP.NET Web API 2框架揭秘》免费赠送
  3. innodb log file size 配置估算以及修改
  4. 【BZOJ-4519】不同的最小割 最小割树(分治+最小割)
  5. GIT 专贴
  6. 【HDOJ】4982 Goffi and Squary Partition
  7. LeetCode_Search a 2D Matrix
  8. 【web前端开发】浏览器兼容性处理
  9. XSS绕过&lt;&gt;进行测试
  10. notes for python简明学习教程(2)
  11. python selenium简单安装及使用
  12. 【Tomcat】Tomcat配置JVM参数步骤
  13. ERROR 3009 (HY000): Column count of mysql.user is wrong&hellip;..
  14. 二、core abp 数据库迁移
  15. git基本操作及上传代码到gitHub
  16. NN中的激活函数【转载】
  17. sklearn异常检测demo
  18. python的基础socket知识
  19. go基本操作
  20. 安装vuecli和使用elememtUi

热门文章

  1. Windows一些技巧
  2. [SDOI] 仪仗队
  3. 处理方法返回ModelAndView类型
  4. python函数的使用
  5. 安卓自定义View实例-----跟随手指移动的鸟
  6. 方法重载(method overloading)
  7. SQL server安装时显示重启计算机失败问题解决办法
  8. echarts地图
  9. 小程序onShow事件获取options方法
  10. 你这是virus吧?