浏览器导出CSV表格

1.CSV文件

逗号分隔值文件格式,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

2.遍历table表格

导入在线的jquery

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>

将表格中的数据转换为CSV文件格式的字符串

		var str="";
		$("#data tr").each(function(i){
			$(this).children('td').each(function(j){
				str+=$(this).text()+",";
			});
			str+="\n";
		});

3.将满足CSV文件的字符串生成为CSV文件

   function createCSV(str){
   	var link = document.createElement("a"); 
       var csvContent = "data:text/csv;charset=GBK,\uFEFF" + str; 
       var encodedUri = encodeURI(csvContent); 
       link.setAttribute("href", encodedUri);
       link.setAttribute("download", "data.csv");
       document.body.appendChild(link);
       link.click(); 
       document.body.removeChild(link); 
   }
   //注:如果str的数据过大,因为url有最大长度限制,encodeURI是会把字符串转化为url,超出限制长度部分数据丢失导致下载失败.所以面对大量数据的返回结果时应该使用Blod(二进制大对象)的方式来存放缓存数据.

4.完整代码

<!DOCTYPE html>
<html>
<head>
	<title>导出表格CSV数据</title>
</head>
<body>
<table id="data" border="1" style="border-collapse: collapse;">
	<tr>
		<td>姓名</td>
		<td>性别</td>
		<td>语文</td>
		<td>数学</td>
		<td>外语</td>
	</tr>
	<tr>
		<td>小明</td>
		<td></td>
		<td>100</td>
		<td>30</td>
		<td>40</td>
	</tr>
	<tr>
		<td>小红</td>
		<td></td>
		<td>50</td>
		<td>70</td>
		<td>80</td>
	</tr>
	<tr>
		<td>小张</td>
		<td></td>
		<td>100</td>
		<td>100</td>
		<td>100</td>
	</tr>
</table>
<br>
<input type="button" value="导出CSV" id="bt">
</body>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
	
	$("#bt").click(function(){
		var str="";
		$("#data tr").each(function(i){
			$(this).children('td').each(function(j){
				str+=$(this).text()+",";
			});
			str+="\n";
		});
    createCSV(str);
	});
	function createCSV(str){
		var link = document.createElement("a"); 
        var csvContent = "data:text/csv;charset=GBK,\uFEFF" + str; 
        var encodedUri = encodeURI(csvContent); 
        link.setAttribute("href", encodedUri);
        link.setAttribute("download", "data.csv");
        document.body.appendChild(link);
        link.click(); 
        document.body.removeChild(link); 
	}
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值