2017-05-11 1 views
0

이 기능을 사용하여 이미지를 엑셀 (XLS)로 내보낼 수 있습니다. 이 코드는 이미지의 실제 위치를 필요로합니다. 그러나 물리적 인 경로 대신에 나는 이미지의 데이터를 전달하려고합니다. 예 : 데이터 : image/jpeg; base64,/9j/4AAQSkZJRgABAQAAAQABAA ...자바 스크립트 - 엑셀로 이미지 내보내기

가능합니까?

function exportExcel() { 
 

 
    var template = { 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 name=ProgId content=Excel.Sheet> <meta name=Generator content="Microsoft Excel 11"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!--[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>{table}</table></body></html>' }; 
 

 
    var format = function (s, c) { 
 
     return s.replace(new RegExp("{(\\w+)}", "g"), function (m, p) { 
 
      return c[p]; 
 
     }); 
 
    }; 
 

 
    var base64 = function (s) { 
 
     return window.btoa(window.unescape(encodeURIComponent(s))); 
 
    }; 
 

 
    var ctx = { worksheet: 'Worksheet', table: '<img src="file://C:/Temp/chart.png" alt="" />' }; 
 

 
    var b64 = base64(format(template.excel, ctx)); 
 

 
    blob = b64toBlob(b64, 'application/vnd.ms-excel'); 
 
    var blobUrl = window.URL.createObjectURL(blob); 
 

 
    var saveLink = document.createElement('a'); 
 

 
    saveLink.download = 'export.xls'; 
 
    saveLink.href = blobUrl; 
 
    saveLink.click(); 
 
} 
 

 

 
function b64toBlob(b64Data, contentType, sliceSize) { 
 
    contentType = contentType || ''; 
 
    sliceSize = sliceSize || 512; 
 

 
    var byteCharacters = window.atob(b64Data); 
 
    var byteArrays = []; 
 

 
    var offset; 
 
    for (offset = 0; offset < byteCharacters.length; offset += sliceSize) { 
 
     var slice = byteCharacters.slice(offset, offset + sliceSize); 
 

 
     var byteNumbers = new Array(slice.length); 
 
     var i; 
 
     for (i = 0; i < slice.length; i = i + 1) { 
 
      byteNumbers[i] = slice.charCodeAt(i); 
 
     } 
 

 
     var byteArray = new window.Uint8Array(byteNumbers); 
 

 
     byteArrays.push(byteArray); 
 
    } 
 

 
    var blob = new window.Blob(byteArrays, { 
 
     type: contentType 
 
    }); 
 
    return blob; 
 
}

요구 사항의

첨부 스크린 샷. enter image description here 감사! 답변에 대한 데이터 URL을 사용하여 파일의 URL을 교체하십시오

답변

0

....

var ctx = { worksheet: 'Worksheet', table: '<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA..." alt="" />' }; 
+0

감사합니다! 나는 그것을 시도했지만 작동하지 않습니다. dataURI를 img src로 설정하면 웹 페이지에 이미지가 표시됩니다. 그러나이 함수가 그것을 처리하지 않는 것처럼 보입니다. – CPatel