导出数据到html c,JS实现前端将数据导出excel

本文介绍了如何使用table标签和字符串拼接的方法,分别将JSON数据转换成伪Excel(HTML)和CSV格式,以便于下载。两种方法各有优劣,适用于不同的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击此跳到原文,原文有效果动图。

方法一

将table标签,包括tr、td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但文件形式上还是html,代码如下

使用table标签方式将json导出xls文件

导出

function tableToExcel(){

//要导出的json数据

const jsonData = [

{

name:'路人甲',

phone:'123456',

email:'123@123456.com'

},

{

name:'炮灰乙',

phone:'123456',

email:'123@123456.com'

},

{

name:'土匪丙',

phone:'123456',

email:'123@123456.com'

},

{

name:'流氓丁',

phone:'123456',

email:'123@123456.com'

},

]

//列标题

let str = '

姓名电话邮箱';

//循环遍历,每行加入tr标签,每个单元格加td标签

for(let i = 0 ; i < jsonData.length ; i++ ){

str+='

';

for(let item in jsonData[i]){

//增加\t为了不让表格显示科学计数法或者其他格式

str+=`

${ jsonData[i][item] + '\t'}`;

}

str+='

';

}

//Worksheet名

let worksheet = 'Sheet1'

let uri = 'data:application/vnd.ms-excel;base64,';

//下载的表格模板数据

let template = `

xmlns:x="urn:schemas-microsoft-com:office:excel"

xmlns="http://www.w3.org/TR/REC-html40">

`;

//下载模板

window.location.href = uri + base64(template)

}

//输出base64编码

function base64 (s) { return window.btoa(unescape(encodeURIComponent(s))) }

方法二

通过将json遍历进行字符串拼接,将字符串输出到csv文件,代码如下

使用a标签方式将json导出csv文件

导出

function tableToExcel(){

//要导出的json数据

const jsonData = [

{

name:'路人甲',

phone:'123456789',

email:'000@123456.com'

},

{

name:'炮灰乙',

phone:'123456789',

email:'000@123456.com'

},

{

name:'土匪丙',

phone:'123456789',

email:'000@123456.com'

},

{

name:'流氓丁',

phone:'123456789',

email:'000@123456.com'

},

]

//列标题,逗号隔开,每一个逗号就是隔开一个单元格

let str = `姓名,电话,邮箱\n`;

//增加\t为了不让表格显示科学计数法或者其他格式

for(let i = 0 ; i < jsonData.length ; i++ ){

for(let item in jsonData[i]){

str+=`${jsonData[i][item] + '\t'},`;

}

str+='\n';

}

//encodeURIComponent解决中文乱码

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

//通过创建a标签实现

let link = document.createElement("a");

link.href = uri;

//对下载的文件命名

link.download = "json数据表.csv";

document.body.appendChild(link);

link.click();

document.body.removeChild(link);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值