js 데이터 내 보 내기 EXCEL(대량의 데이터 내 보 내기 지원)
5494 단어 js데이터 내 보 내기excel
1、ActiveXObject(“Excel.Application”)
이런 방법 은 IE 에서 만 사용 할 수 있다.
장점:VBA 제어 엑셀 대상 참조.(코드 가 안 돼 요.매크로 를 녹음 할 수 있어 요.)
단점:cell 대상 참조 가 너무 느 려 서 만 줄 이상 의 데이터 내 보 내기 시간 이 2 분 이 넘 습 니 다.
2.Table 방식 으로 html 파일 로 내 보 냅 니 다.
3.CSV 방식 으로 내 보 냅 니 다.
사용 중 데이터 가 많 으 면 상기 2,3 중 방법 이 효력 을 잃 는 다 는 것 을 발견 하고 4 번 째 방법 인 toLargerCSV 를 정리 했다.
네 번 째 방법 은 IE 10,chrome 테스트 를 통 과 했 습 니 다.
<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>
// Table xls
function TableToExcel(){
// json
var jsonData = [
{
name:'001',
id:'621699190001011231'
},
{
name:'002',
id:'52069919000101547X'
},
{
name:'003',
id:'423699190103015469'
},
{
name:'004',
id:'341655190105011749'
}
]
// json table
//
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];
//
// 1 tr style="mso-number-format:'\@';" 2 = 'XXXX'
// 15
/*var reg = /^[0-9]+.?[0-9]*$/;
if ((cellvalue.length>15) && (reg.test(cellvalue))){
//cellvalue = '="' + cellvalue + '"';
}*/
// ` ', ES6
str+=`<td style="mso-number-format:'\@';">${cellvalue}</td>`;
// str+=`<td>${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(){
// json
var jsonData = [
{
name:'001',
id:'621699190001011231'
},
{
name:'002',
id:'52069919000101547X'
},
{
name:'003',
id:'423699190103015469'
},
{
name:'004',
id:'341655190105011749'
}
]
// json table
//
var str = 'name,id
';
//
for(let i = 0 ; i < jsonData.length ; i++ ){
for(let item in jsonData[i]){
// \t
// ` ', ES6
str+=`${jsonData[i][item] + '\t,'}`;
}
str+='
';
}
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);
}
// , 15 30 , 6
function toLargerCSV(){
//CSV , MySQL excel 。
// Excel 15 , 0 =“ ”
var str = ' , , ,
';
for(let i=0;i<100000;i++){
str += i.toString()+',1234567890123456789\t, ,bbbb,
'
}
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>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.