<html>
<head>
<div>以Table格式导为xls文件
<button onclick='TableToExcel()'>导出</button></div>
<div>导出CSV文件
<button onclick='toCSV()'>导出</button></div>
<div>大量数据导出CSV
<button onclick='toLargerCSV()'>导出</button></div>
</head>
<body>
<script>
function TableToExcel() {
var jsonData = [{
name: '001',
id: '621699190001011231'
},
{
name: '002',
id: '52069919000101547X'
},
{
name: '003',
id: '423699190103015469'
},
{
name: '004',
id: '341655190105011749'
}
]
var str = '<tr><td>name</td><td>id</td></tr>';
for (let i = 0; i < jsonData.length; i++) {
str += '<tr>';
for (let item in jsonData[i]) {
var cellvalue = jsonData[i][item];
str += `<td style="mso-number-format:'\@';">${cellvalue}</td>`;
}
str += '</tr>';
}
var worksheet = '导出结果'
var uri = 'data:application/vnd.ms-excel;base64,';
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><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${worksheet}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head><body><table>${str}</table></body></html>`;
function base64(s) {
return window.btoa(unescape(encodeURIComponent(s)))
}
window.location.href = uri + base64(template);
}
function toCSV() {
var jsonData = [{
name: '001',
id: '621699190001011231'
},
{
name: '002',
id: '52069919000101547X'
},
{
name: '003',
id: '423699190103015469'
},
{
name: '004',
id: '341655190105011749'
}
]
var str = 'name,id\n';
for (let i = 0; i < jsonData.length; i++) {
for (let item in jsonData[i]) {
str += `${jsonData[i][item] + '\t,'}`;
}
str += '\n';
}
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
var link = document.createElement("a");
link.href = uri;
link.download = "导出.csv";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
function toLargerCSV() {
var str = '行号,内容,题目,标题\n';
for (let i = 0; i < 100000; i++) {
str += i.toString() + ',1234567890123456789\t,张三李四王五赵六,bbbb,\n'
}
var blob = new Blob([str], {
type: "text/plain;charset=utf-8"
});
blob = new Blob([String.fromCharCode(0xFEFF), blob], {
type: blob.type
});
object_url = window.URL.createObjectURL(blob);
var link = document.createElement("a");
link.href = object_url;
link.download = "导出.csv";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
</script>
</body>
</html>