source

HTML 테이블을 별도의 시트에서 Excel(.xls)로 내보내기

ittop 2023. 8. 10. 21:29
반응형

HTML 테이블을 별도의 시트에서 Excel(.xls)로 내보내기

테이블 뷰가 포함된 간단한 HTML 페이지(외부 응용 프로그램에서 생성됨)를 가지고 있습니다.저는 그 페이지에서 표를 긁어내어 엑셀 워크북에 넣으려고 합니다.저는 여기에 있는 방법을 사용하여 전체 HTML 내용을 워크북에 넣을 수 있었습니다.

관련 질문의 코드:

var tableToExcel = (function() {
  var uri = 'data:application/vnd.ms-excel;base64,'
    , 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>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})()

그러나 이 방법은 여러 스프레드시트를 지원하지 않습니다.제가 필요한 것은 모든 HTML 테이블이 동일한 Excel 워크북의 스프레드시트에 있는 것입니다.이와 같은 것:enter image description here

두 개의 스프레드시트로 Excel 샘플 문서를 만들고 .html 형식의 내보내기를 보고 리버스 엔지니어링을 시도했습니다.안타깝게도 워크북과 워크북 시트 간의 연결을 다시 만드는 방법을 이해하지 못했습니다.

내가 이해할 수 있는 한.format()함수는 워크시트 데이터와 Excel 템플릿을 '마법적'으로 결합합니다.그 기능은 제가 보기에 매우 암호화되어 있어서 어떻게 수정해야 할지 모르겠습니다.

제가 엔드 게임으로 필요한 것은 이런 것을 부를 수 있는 가능성을 갖는 것입니다.tableToExcel(document.getElementsByTagName('table'), 'Workbook Name');

만약 이것이 가능하다면, 그리고 가능하다면, 어떻게 그것을 실현할 수 있을까요?

이 블로그 게시물 확인: http://www.kubilayerdogan.net/ ?p=218

 $(document).ready(function() {
    $("#btnExport").click(function(e) {
        //getting values of current time for generating the file name
        var dt = new Date();
        var day = dt.getDate();
        var month = dt.getMonth() + 1;
        var year = dt.getFullYear();
        var hour = dt.getHours();
        var mins = dt.getMinutes();
        var postfix = day + "." + month + "." + year + "_" + hour + "." + mins;
        //creating a temporary HTML link element (they support setting file names)
        var a = document.createElement('a');
        //getting data from our div that contains the HTML table
        var data_type = 'data:application/vnd.ms-excel';
        var table_div = document.getElementById('dvData');
        var table_html = table_div.outerHTML.replace(/ /g, '%20');
        a.href = data_type + ', ' + table_html;
        //setting the file name
        a.download = 'exported_table_' + postfix + '.xls';
        //triggering the function
        a.click();
        //just in case, prevent default behaviour
        e.preventDefault();
    });
});

당신은 jsfiddle에서 그것을 볼 수 있습니다: http://jsfiddle.net/kublaios/8ZQN4/1/ .

언급URL : https://stackoverflow.com/questions/18234448/exporting-html-tables-to-excel-xls-in-a-separate-sheet

반응형