JS 데이터 엑셀 내 보 내기

10509 단어 JS 조작
인터넷 에서 많은 방법 을 찾 았 는데 주로 세 가지 가 있 는데 개인 적 으로 세 번 째 가 좋다 고 생각 합 니 다.
방법 1:
        tr, td 태그 등 을 통 해 table 을 표 에 출력 하 는 것 이 이 루어 집 니 다. 이러한 방법의 단점 은 위 엑셀 입 니 다. xls 를 접미사 로 하 는 파일 을 만 드 는 것 이 라 고 하지만 파일 형식 은 html 입 니 다. 코드 는 다음 과 같 습 니 다.




  
  
  
  Document



  

table json xls

function tableToExcel() { // json var jsonData = [ { name: ' ', phone: '123456', email: '[email protected]' }, { name: ' ', phone: '123456', email: '[email protected]' }, { name: ' ', phone: '123456', email: '[email protected]' }, { name: ' ', phone: '123456', email: '[email protected]' }, ] // var str = '<tr><td> </td><td> </td><td> </td></tr>'; // , tr , td for (let i = 0; i < jsonData.length; i++) { str += '<tr>'; for (let item in jsonData[i]) { // \t str += `<td>${jsonData[i][item] + '\t'}</td>`; } str += '</tr>'; } //Worksheet var worksheet = 'Sheet1' 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>`; // window.location.href = uri + base64(template) } // base64 function base64(s) { return window.btoa(unescape(encodeURIComponent(s))) }

방법 2:
        json 을 문자열 로 연결 하여 csv 파일 에 문자열 을 출력 합 니 다. 출력 된 파일 은 html 형식의 파일 이 아니 라 진정한 csv 파일 입 니 다. 코드 는 다음 과 같 습 니 다.




  
  
  
  Document



  

a json csv

function tableToExcel() { // json var jsonData = [ { name: ' ', phone: '123456789', email: '[email protected]' }, { name: ' ', phone: '123456789', email: '[email protected]' }, { name: ' ', phone: '123456789', email: '[email protected]' }, { name: ' ', phone: '123456789', email: '[email protected]' }, ] // , , let str = ` , ,
`; // \t for (let i = 0; i < jsonData.length; i++) { for (let item in jsonData[i]) { str += `${jsonData[i][item] + '\t'},`; } str += '
'; } //encodeURIComponent let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str); // a var link = document.createElement("a"); link.href = uri; // link.download = "json .csv"; document.body.appendChild(link); link.click(); document.body.removeChild(link); }

방법 3:
         csv 가 되 어 csv 를 sheet 대상 으로 바 꾸 고 하나의 sheet 를 최종 엑셀 파일 의 blob 대상 으로 바 꾼 다음 URL. createObject URL 을 이용 하여 다운로드 합 니 다 (코드 에 몇 가지 함수 가 사용 되 지 않 은 것 같 지만 기능 을 실현 할 수 있 습 니 다. 저 는 상관 하지 않 습 니 다. 관심 있 는 것 은 간결 하 게 할 수 있 습 니 다. 이 방법 은 jquery. js (jquery. js) 에 의존 합 니 다.https://jquery.com/download/xlsx. core. min. js(https://download.csdn.net/download/dylbb818/9595652). 코드 는 다음 과 같 습 니 다.




  
  JS     excel  
  
  



  

excel

var obj = {name:'xixi',sex:' '}; var arr = [{name:'haha',sex:' '},{name:'xixi',sex:' '}]; var arr2 = ['haha','xixi']; var str; for(let i = 0;i<arr2.length;i++){ str = arr2[i]; } var st1 = JSON.stringify(arr); var st2 = JSON.stringify(obj); // excel n function readWorkbookFromLocalFile(file, callback) { var reader = new FileReader(); reader.onload = function (e) { var data = e.target.result; var workbook = XLSX.read(data, { type: 'binary' }); if (callback) callback(workbook); }; reader.readAsBinaryString(file); } // excel function outputWorkbook(workbook) { var sheetNames = workbook.SheetNames; // sheetNames.forEach(name => { var worksheet = workbook.Sheets[name]; // for (var key in worksheet) { // v console.log(key, key[0] === '!' ? worksheet[key] : worksheet[key].v); } }); } // csv function csv2table(csv) { var html = '<table>'; var rows = csv.split('
'); rows.pop(); // rows.forEach(function (row, idx) { var columns = row.split(','); columns.unshift(idx + 1); // if (idx == 0) { // html += '<tr>'; for (var i = 0; i < columns.length; i++) { html += '<th>' + (i == 0 ? '' : String.fromCharCode(65 + i - 1)) + '</th>'; } html += '</tr>'; } html += '<tr>'; columns.forEach(function (column) { html += '<td>' + column + '</td>'; }); html += '</tr>'; }); html += '</table>'; return html; } function table2csv(table) { var csv = []; $(table).find('tr').each(function () { var temp = []; $(this).find('td').each(function () { temp.push($(this).html()); }) temp.shift(); // csv.push(temp.join(',')); }); csv.shift(); return csv.join('
'); } // csv sheet function csv2sheet(csv) { var sheet = {}; // sheet csv = csv.split('
'); csv.forEach(function (row, i) { row = row.split(','); if (i == 0) sheet['!ref'] = 'A1:' + String.fromCharCode(65 + row.length - 1) + (csv.length - 1); row.forEach(function (col, j) { sheet[String.fromCharCode(65 + j) + (i + 1)] = { v: col }; }); }); return sheet; } // sheet excel blob , URL.createObjectURL function sheet2blob(sheet, sheetName) { sheetName = sheetName || 'sheet1'; var workbook = { SheetNames: [sheetName], Sheets: {} }; workbook.Sheets[sheetName] = sheet; // excel var wopts = { bookType: 'xlsx', // bookSST: false, // Shared String Table, , , IOS type: 'binary' }; var wbout = XLSX.write(workbook, wopts); var blob = new Blob([s2ab(wbout)], { type: "application/octet-stream" }); // ArrayBuffer function s2ab(s) { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf; } return blob; } /** * , * @param url , blob , * @param saveName , */ function openDownloadDialog(url, saveName) { if (typeof url == 'object' && url instanceof Blob) { url = URL.createObjectURL(url); // blob } var aLink = document.createElement('a'); aLink.href = url; aLink.download = saveName || ''; // HTML5 , , , ,file:/// var event; if (window.MouseEvent) event = new MouseEvent('click'); else { event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); } aLink.dispatchEvent(event); } function loadRemoteFile(url) { readWorkbookFromRemoteFile(url, function (workbook) { readWorkbook(workbook); }); } function exportExcel() { var csv = table2csv($('#result table')[0]); var sheet = csv2sheet(csv); var blob = sheet2blob(sheet); openDownloadDialog(blob, ' .xlsx'); } function exportSpecialExcel() { var aoa = [ [' ', null, null, ' '], // 2 null [' ', ' ', ' ', ' '], [' ', ' ', 18, new Date()], [' ', ' ', 22, new Date()] ]; var sheet = XLSX.utils.aoa_to_sheet(aoa); sheet['!merges'] = [ // A1-C1 { s: { r: 0, c: 0 }, e: { r: 0, c: 2 } } ]; openDownloadDialog(sheet2blob(sheet), ' .xlsx'); }

좋은 웹페이지 즐겨찾기