prosource

파이어폭스 브라우저에서 javascript에서 탁월하도록 동적 html 테이블을 내보냅니다.

probook 2023. 4. 18. 23:06
반응형

파이어폭스 브라우저에서 javascript에서 탁월하도록 동적 html 테이블을 내보냅니다.

javascript에서 뛰어나게 동적 html 테이블을 내보내고 싶은데 코드의 activex 객체를 사용하지 않고 파이어폭스 브라우저에서 할 수 있는 방법이 있나요? 도와주세요.

다음은 사용자가 컴퓨터에 Excel을 설치했다고 가정할 때 JavaScript를 사용하여 Firefox에서 이를 수행하는 함수는 다음과 같습니다.

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))
  }
})()

jsFiddle 라이브 예시:

표, 셀 스타일 및 형식을 HTML 구문에서 사용자 정의할 수 있는 Excel 파일을 스프레드시트 데이터 XML 형식으로 동적으로 생성할 수 있습니다.

IE에서 이 작업을 수행하려면 Blob 객체를 사용하여 msSaveBlob 메서드를 호출해야 합니다.FF 및 Chrome의 경우 href의 데이터를 데이터로 변경할 수 있습니다.application/vnd.ms-filename

function fnExcelReport() {
    var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
    tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';

    tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';

    tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
    tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';

    tab_text = tab_text + "<table border='1px'>";
    tab_text = tab_text + $('#myTable').html();
    tab_text = tab_text + '</table></body></html>';

    var data_type = 'data:application/vnd.ms-excel';

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {
        if (window.navigator.msSaveBlob) {
            var blob = new Blob([tab_text], {
                type: "application/csv;charset=utf-8;"
            });
            navigator.msSaveBlob(blob, 'Test file.xls');
        }
    } else {
        $('#test').attr('href', data_type + ', ' + encodeURIComponent(tab_text));
        $('#test').attr('download', 'Test file.xls');
    }
}

작업 예: http://jsfiddle.net/h42y4ke2/21/ YT 튜토리얼: https://www.youtube.com/watch?v=gx_yGY6NHkc

AFIK JavaScript에는 실제 Excel 파일을 만들기 위한 라이브러리는 없지만 HTML로 테이블을 .xls 확장자의 파일로 내보내려고 시도할 수 있습니다.

파이어폭스용 확장 table2clipboard가 있습니다.또한 수동으로 DOM 트리에서 csv 출력을 생성하여 사용자가 csv 파일로 저장할 수도 있습니다.Excel은 CSV에서 Import할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6955627/export-dynamic-html-table-to-excel-in-javascript-in-firefox-browser

반응형