【转载】JS导出CSV文件

转自: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>

时间: 2024-10-31 00:06:57

【转载】JS导出CSV文件的相关文章

Web 端 js 导出csv文件(使用a标签)

前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这个需求肯定是有答案的,只是对于各浏览器处理会稍微不一样.(主要是IE 和其他浏览器的区别). 在IE中使用ActiveXObject 实现,在firefox 和Chrome 中使用  a 标签(或者js)就可以实现了. 这里主要讲一下其他浏览器中的实现. 使用 a 标签实现方式 直接上例子: 1 <

前端js导出CSV,Excel格式文件

通过自己实际测试有以下几种方法 方法一通过a标签实现,把要导出的数据用"\n"和","拼接成一个字符串,然后把字符串放到href中,这种方法只支持chrome,firefox等非ie浏览器 html页面代码如下 <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf

web前端导出csv文件

前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这个需求肯定是有答案的,只是对于各浏览器处理会稍微不一样.(主要是IE 和其他浏览器的区别). 在IE中使用ActiveXObject 实现,在firefox 和Chrome 中使用  a 标签(或者js)就可以实现了. 这里主要讲一下其他浏览器中的实现. 使用 a 标签实现方式 直接上例子: [ht

解决bcp导出CSV文件没有表头

思路: 1.输出表头文件到指定目录 2.bcp导出csv文件到temp目录 3.将以上导出文件与表头文件合并 4.删除temp目录下的文件 实现: create proc exportCSV ( @id int ,@filepath varchar(8000),--输入参数 @re int output --输出参数 ) as declare @s varchar(8000) --csv文件的表头,你也可以自定义表头,但是为了与前端d3.js访问,直接就data1,data2了set @s='e

thinkphp导出csv文件

导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this->display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的.最后在方法后面加了一个exit结束就好了,下面是代码: 1.IndexController.class.php <?php namespace Home\Controller; use Think\Con

项目--简单导出CSV文件

//导出 protected void BtnOutPut_Click(object sender, EventArgs e) { //角色 InitialRoles(); DataTable dt = DBClass.GetDataTable(string.Format(@"SELECT * FROM {0} Order By SN desc", View(Where))); StringWriter sw = new StringWriter(); //4S店不能看到总部价格等相关

mysqldump 导出CSV文件

mysqldump -h 127.0.0.1 -u root -p database table -t -T /home/mysql/ --fields-enclosed-by=\" --fields-terminated-by=, -w 增加条件判断语句 老外的一个处理mysql异常的错误,明天整理一下 http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-f

java utf8字符 导出csv 文件的乱码问题。

在输出的格式为UTF-8的格式,但是打开CSV文件一直为乱码,后来参考了这里的代码,搞定了乱码问题,原文请参考:http://hbase.iteye.com/blog/1172200 private static void writeBcp( ) throws IOException { //Create bcp file if not exist File bcpFile = new File("test.csv"); //bcpFile.delete(); byte[] bom =

php 导入/导出 csv 文件

php 导入/导出 csv 文件 1.简介 项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用原生PHP,实现了CSV格式数据的导入和导出功能.并解决相关乱码问题. 将xls转换成csv的文本格式,然后再用php分析这个文件,和PHP分析文本没有什么区别.优点:跨平台,效率比较高.可以读写.缺点:只能直接使用csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化.一个文件只有一个SHEET. 2.相关函数介绍 2.1