前端怎样才能写excel,实在也是比较简朴的,只是没有打仗这一块,固然这边讲的只是简朴的入门。
这边重要报告2种体式格局,一种是支撑主流浏览器,一种是支撑Ie浏览器
主流浏览器
这边重如果运用data协定,经由过程data协定剖析excel的Contenttype(application/vnd.ms-excel)
所以这边花样就是 ‘data:+Content-type;+内容’
excel的内容花样是有模版的以下:
<html
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta charset="UTF-8"><!--[if gte mso 9]>
<xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>sheet</x:Name>
<x:WorksheetOptions>
<x:DisplayGridlines/>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</x:ExcelWorkbook></xml>
</head>
<body>
{tableData}
</body>
</html>
然后就是就是依据上述模板举行建立即可,以下就是经由过程这类体式格局直接导出excel
(function() {
var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>sheet</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>{tableData}</body></html>'
var Excel_URL = 'data:application/vnd.ms-excel;base64,'
var Excel = {
ToExcel: function (data) {
var isIe = window.navigator.userAgent.toLocaleUpperCase().indexOf('trident')
if (isIe !== -1) {
this._IEExport(data)
} else {
this._otherExport(data)
}
},
_otherExport: function (data) {
var content = ''
if (typeof data === 'string') {
// 传入id,猎取table的内容
var ele = document.querySelector(data)
content = template.replace('{tableData}', ele.outerHTML)
} // else能够做更多操纵
var aEle = document.createElement('a')
aEle.href = Excel_URL + window.btoa(unescape(encodeURIComponent(content)))
aEle.download = '测试.xls'
aEle.click()
}
}
window.Excel = Excel
})()
IE浏览器
IE下重要就是运用ActiveXObject来完成的:详细见以下代码
(function() {
var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>sheet</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>{tableData}</body></html>'
var Excel_URL = 'data:application/vnd.ms-excel;base64,'
var Excel = {
ToExcel: function (data) {
var isIe = window.navigator.userAgent.toLocaleUpperCase().indexOf('trident')
if (isIe !== -1) {
this._IEExport(data)
} else {
this._otherExport(data)
}
},
_IEExport: function (data) {
// 翻开excel
var oXL = new ActiveXObject('Excel:Application')
// 新建事情博
var oWB = oXL.WorkBooks.Add()
// 激活新建事情博
var oSheet = oWB.ActiveSheet
if (typeof data === 'string') {
// table id
var table = document.querySelector(data)
// 建立一个装内容的容器
var sel = document.body.createTextRange()
// 将table中的内容移入容器
sel.moveToElementText(table)
// 选中移入的内容
try {
console.log(sel.select)
sel.select()
} catch (e) {
console.log(e)
}
// 复制容器中的内容
sel.execCommand("Copy")
// 黏贴到excel事情簿中
oSheet.Paste()
}
// 关掉Excel
var filename = oXL.Application.GetSaveAsFilename('test.xls', 'Excel Spreadsheet (*.xls),*.xls')
// 保留事情簿
oWB.SaveAs(filename)
oWB.close()
oXL.quit()
}
}
window.Excel = Excel
})()
这边方才进修,要制作好的excel照样须要越发深切的去相识API才行