html 5 tableエクスポートExcel

2679 ワード

現在、各ブラウザは基本的にdataプロトコルをサポートしているので、このプロトコルを使用してWebページのtableをexcelに変換してダウンロードすることができます.
  • htmlに対してbase 64符号化処理
  • を行う.
  • 符号化htmlコンテンツに接頭辞data:アプリケーション/vndを追加する.ms-excel; ,ブラウザがその中のデータをexcelとして処理することができ、ブラウザはexcelファイルコードのダウンロードまたは開くを求める小例:
  • 
    
    
    
        function base64 (content) {
           return window.btoa(unescape(encodeURIComponent(content)));         
        }
        function exportOffice(tableID){
                var type = 'doc';
                var table = document.getElementById(tableID);
                var excelContent = table.innerHTML;
        
                var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+type+"' xmlns='http://www.w3.org/TR/REC-html40'>";
                excelFile += "<head>";
                excelFile += "<!--[if gte mso 9]>";
                excelFile += "<xml>";
                excelFile += "<x:ExcelWorkbook>";
                excelFile += "<x:ExcelWorksheets>";
                excelFile += "<x:ExcelWorksheet>";
                excelFile += "<x:Name>";
                excelFile += "{worksheet}";
                excelFile += "</x:Name>";
                excelFile += "<x:WorksheetOptions>";
                excelFile += "<x:DisplayGridlines/>";
                excelFile += "</x:WorksheetOptions>";
                excelFile += "</x:ExcelWorksheet>";
                excelFile += "</x:ExcelWorksheets>";
                excelFile += "</x:ExcelWorkbook>";
                excelFile += "</xml>";
                excelFile += "<![endif]-->";
                excelFile += "</head>";
                excelFile += "<body>";
                excelFile += excelContent;
                excelFile += "</body>";
                excelFile += "</html>";
                var base64data = "base64," + base64(excelFile);
                switch(type){
                    case 'excel':
                        window.open('data:application/vnd.ms-'+type+';'+base64data);
                    break;
                    case 'powerpoint':
                        window.open('data:application/vnd.ms-'+type+';'+base64data);
                    break;
                }
        }
    
    
    
    
    
    1 100
    2 95.5