js 纯前端导出表格为excel

参考

参考2 两种方法

方法一

以下方法为伪excel

<template>
<button @click="exportExcel">导出</button>
//border="1"    为导出的表格添加边框
	<table id="table_report" border="1">
		<th>
			....
		</th>
	</table>
</template>

export default {
	methods:{
		exportExcel(){
			//window.location.href='<%=basePath%>pmb/excelShowInfo.do';
      //获取表格
      var exportFileContent = document.getElementById("table_report").outerHTML;               
      //设置格式为Excel,表格内容通过btoa转化为base64,此方法只在文件较小时使用(小于1M)
      //exportFileContent=window.btoa(unescape(encodeURIComponent(exportFileContent)));
      //var link = "data:"+MIMEType+";base64," + exportFileContent;
      //使用Blob
      var blob = new Blob([exportFileContent], {type: "text/plain;charset=utf-8"});         //解决中文乱码问题
      blob =  new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
    //设置链接
      var link = window.URL.createObjectURL(blob);
      var a = document.createElement("a");    //创建a标签
      a.download = "什么什么什么.xls";  //设置被下载的超链接目标(文件名)
      a.href = link;                            //设置a标签的链接
      document.body.appendChild(a);            //a标签添加到页面
      a.click();                                //设置a标签触发单击事件
      document.body.removeChild(a);            //移除a标签
		}
	}
}

效果图 (实际是html,所以其他为空白)
在这里插入图片描述

方法二

<template>
	<button @click="exportFile">导出</button>
</template>
export default {
	data() {
		return{
			jsonData:[....],  //表格数据
			titleList: ['序号', '名称', '时间'],  //表格标题
			dataField: ['seq', 'name', 'time'], //表格所需要展示的字段
		}
	},
	methods: {
		exportFileBtn() {
        // 列标题,逗号隔开,每一个逗号就是隔开一个单元格
        let str = this.titleList.toString() + '\n';
        // 增加\t为了不让表格显示科学计数法或者其他格式
        for(let i = 0 ; i < this.jsonData.length ; i++ ){
            for(const key of this.dataField){
            //此判断为seq后端未返回,所以前端自行添加数据,可根据自己需求删除修改
              if(key == 'seq') {
                str+=`${i+1 + '\t'},`;
              } else {
                str+=`${jsonData[i][key]== undefined?'':jsonData[i][key] + '\t'},`;     
              }
            }
            str+='\n';
        }
        // encodeURIComponent解决中文乱码
        const uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
        // 通过创建a标签实现
        const link = document.createElement("a");
        link.href = uri;
        // 对下载的文件命名
        link.download =  "json数据表.csv";
        link.click();
    }
	}
}

效果图 (数据字段不同因为文章简单点所以换了,此为本地运行效果)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下步骤在前端jsp页面中导出Excel表格: 1. 首先,您需要在页面中添加一个按钮或链接,这样用户可以点击它来触发导出操作。 2. 在单击按钮或链接时,您需要调用一个JavaScript函数来执行导出操作。在该函数中,您可以使用JavaScript创建一个新的XMLHttpRequest对象,并设置请求方式和URL。 3. 在服务器端,您需要编写一个Java servlet来处理导出请求。在该servlet中,您可以使用Apache POI库来创建Excel文档并将其写入响应输出流中。 4. 在客户端,您可以使用JavaScript将响应输出流中的Excel文档下载到用户的计算机上。您可以使用Blob对象和URL.createObjectURL方法来创建一个可下载的URL,并将其分配给一个链接或按钮。 以下是示例代码: JSP页面中的HTML代码: ``` <input type="button" value="导出Excel" onclick="exportExcel()" /> ``` JavaScript代码: ``` function exportExcel() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'exportServlet', true); xhr.responseType = 'blob'; xhr.onload = function() { if (this.status === 200) { var blob = this.response; var link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'data.xlsx'; link.click(); } }; xhr.send(); } ``` Java servlet中的代码: ``` protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=data.xlsx"); Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello, World!"); workbook.write(response.getOutputStream()); workbook.close(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值