js如何导出exel文件?

JavaScript010

js如何导出exel文件?,第1张

简单的办法:使用js生成一个table,可以直接复制到excel中,网上有很多表格插件。

复杂的办法:js传递数据到服务器,服务器生成表格后返回一个下载链接。

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的BrendanEich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

MicrosoftExcel是微软公司的办公软件Microsoftoffice的组件之一,是由Microsoft为Windows和AppleMacintosh操作系统的电脑而编写和运行的一款试算表软件。Excel是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。

(function ($) {

Date.prototype.Format = function (fmt) {

var o = {

"M+": this.getMonth() + 1, //月份

"d+": this.getDate(), //日

"h+": this.getHours(), //小时

"m+": this.getMinutes(), //分

"s+": this.getSeconds(), //秒

"q+": Math.floor((this.getMonth() + 3) / 3), //季度

"S": this.getMilliseconds() //毫秒

}

if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length))

for (var k in o)

if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))

return fmt

}

$.fn.ExportExcel = function (thread_id,tab_id, options) {

var defaults = {

height: '24px',

'line-height': '24px',

margin: '0 5px',

padding: '0 11px',

color: '#000',

background: '#02bafa',

border: '1px #26bbdb solid',

'border-radius': '3px',

/*color: #fff*/

display: 'inline-block',

'text-decoration': 'none',

'font-size': '12px',

outline: 'none',

cursor: 'pointer'

}

var options = $.extend(defaults, options)

return this.each(function () {

var currentObject = $(this)//获取当前对象

currentObject.css(defaults)

currentObject.onmouseover = function () {

$(this).css('cursor', 'hand')

}

currentObject.click(function () {

//From:jsfiddle.net/h42y4ke2/16/

var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">'

tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'

tab_text = tab_text + '<x:Name>Test Sheet</x:Name>'

tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>'

tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>'

tab_text = tab_text + "<table border='1px'>"

tab_text = tab_text + $('#' + thread_id).html()

tab_text = tab_text + $('#' + tab_id).html()

tab_text = tab_text + '</table></body></html>'

var data_type = 'data:application/vnd.ms-excel'

var timeStr = new Date().Format('yyyyMMddhhmmss')

$(this).attr('href', data_type + ', ' + encodeURIComponent(tab_text))

$(this).attr('download', '日常数据报表' + timeStr + '.xls')

})

})

}

})(jQuery)

<html>

<a href="#" id="export">导出</a>

<table>

<thead id="theadDate">

<tr>

<th>姓名</th>

<th>班级</th>

<th>年龄</th>

</tr>

</thead>

<tbody id="tbodyDate">

<tr> <td>张三</td>

<td>高二</td>

<td>18</td>

</tr>

<tr>

<td>李四</td>

<td>高三</td>

<td>20</td>

</tr>

</tbody>

</table>

<script src="assets/javascripts/autotest/export-excel.js" ></script><!-- 引入js文件-->

<script type="text/javascript">

//导出 调用

$(function () {

$('#export').ExportExcel('theadDate','tbodyDate')//tbodyDate为table的id,export为a标签。

})

</script>

</html>

Excel导出是程序开发中的高频需求,尤其是在报表统计中。Excel导出不难实现,其关键在于如何解决数据量大时的性能问题。

相对PHP而言,Java可能在此方面处理得比较好,这也许也是easyExcel如此受欢迎的原因。

那PHP就只能这样?NO、NO、NO!单独不行,还不会请个帮手吗?嗯嗯,这个帮手就是SheetJS。Github地址:https://github.com/SheetJS/js-xlsx

SheetJS是一个由Javascript开发的插件,能进行Excel导出和导入。SheetJS支持CVS、XLS等格式,既可以利用tableDOM(即根据页面table)生成Excel,也可以利用JsonData生成Excel。SheetJS简直是处理Excel的神器,PHP配SheetJS简直如虎添翼。

安装SheetJS有如下几种方式:

1、直接引用js文件

2、使用npm

3、使用bower

SheetJS导出Excel,有以下几种途径:

1、从html标签table生成Excel:table_to_sheet

2、从json数据生成Excel:json_to_sheet

3、从array数组生成Excel:aoa_to_sheet

以上都是我们常用的一些功能,但SheetJS能做的远远不止这些。SheetJS减轻了后端的负担,让Excel处理更加容易,这才是其魅力所在。