2015-09-14 9 views
10

htmlテーブルをpowerpointに変換するjqueryまたはjavascriptソリューションがあるかどうかを知りたいと思います。私が得た解決策はhtml table exportです。ここではすべてのエクスポートオプションがありますが、私はパワーポイントだけの解決策が必要です。私は、HTMLテーブルのエクスポートを使用することができますが、私の懸念は、1つのエクスポート私は全体のプラグインを使用する必要があります。 pptのサンプルコードのみがありますか?クライアント側でhtmlテーブルをpptにエクスポートしますか?

+0

をプラグインを使用してください。 –

+0

@OscarJaraクライアントに処理の一部を委譲できる場合、なぜサーバーをオーバーロードするのですか?サーバーはHTMLテーブルを生成しますが、負荷は軽いですが、ドキュメントをダウンロードする必要がある場合は、サーバーからの負荷データが不必要に増加します。セキュリティ違反ではないので、クライアント側でフォーマットをエクスポートするのはかなり合理的です。 –

答えて

6

ライブラリのサイズが懸念される場合は、自分でjsライブラリを変更することが最善の方法です。パワーポイントの機能に関係しないかもしれないコードの断片を取り出す。そしてテストし、徐々にライブラリを小さくして小さくします。それ以外は、すでにこの解決策が利用可能であることは明らかではありませんでした。

上記のエクササイズを行うことで、エクスポートポイントをPowerpoint機能に維持したまま、tableExport.jsファイルを12kbから5kb(最小化されていない)にすることができました。

/*The MIT License (MIT) 

Copyright (c) 2014 https://github.com/kayalshri/ 

Permission is hereby granted.... 
.... 
*/ 

(function($){ 
    $.fn.extend({ 
     tableExport: function(options) { 
      var defaults = { 
        separator: ',', 
        ignoreColumn: [], 
        tableName:'yourTableName', 
        type:'powerpoint', 
        escape:'true', 
        htmlContent:'false', 
        consoleLog:'false' 
      }; 

      var options = $.extend(defaults, options); 
      var el = this; 

      if(defaults.type == 'powerpoint'){ 
       //console.log($(this).html()); 
       var excel="<table>"; 
       // Header 
       $(el).find('thead').find('tr').each(function() { 
        excel += "<tr>"; 
        $(this).filter(':visible').find('th').each(function(index,data) { 
         if ($(this).css('display') != 'none'){     
          if(defaults.ignoreColumn.indexOf(index) == -1){ 
           excel += "<td>" + parseString($(this))+ "</td>"; 
          } 
         } 
        }); 
        excel += '</tr>';      

       });     


       // Row Vs Column 
       var rowCount=1; 
       $(el).find('tbody').find('tr').each(function() { 
        excel += "<tr>"; 
        var colCount=0; 
        $(this).filter(':visible').find('td').each(function(index,data) { 
         if ($(this).css('display') != 'none'){ 
          if(defaults.ignoreColumn.indexOf(index) == -1){ 
           excel += "<td>"+parseString($(this))+"</td>"; 
          } 
         } 
         colCount++; 
        });               
        rowCount++; 
        excel += '</tr>'; 
       });     
       excel += '</table>' 

       if(defaults.consoleLog == 'true'){ 
        console.log(excel); 
       } 

       var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.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 += excel; 
       excelFile += "</body>"; 
       excelFile += "</html>"; 

       var base64data = "base64," + $.base64.encode(excelFile); 
       window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data); 

      } 

      function parseString(data){ 

       if(defaults.htmlContent == 'true'){ 
        content_data = data.html().trim(); 
       }else{ 
        content_data = data.text().trim(); 
       } 

       if(defaults.escape == 'true'){ 
        content_data = escape(content_data); 
       } 

       return content_data; 
      } 

     } 
    }); 
})(jQuery); 

あなたのtableExport.jsがタイプとしてパワーポイントに渡すことで、このコードを使用してファイルと同じようにそれを呼び出す置き換えることができ、またはあなたはそれを省略することができますし、それはまだ動作します。

+0

私は同じプラグインを使用していますが、パワーポイントのために、その私にブランクデータを示し、 また、私は問題のためのGitHubにチェックしています https://github.com/wenzhixin/bootstrap-table/issues/1660 それはそれはPowerPoint用に実行可能なものは、PowerPointに必要な変更点を教えてください。 –

+0

@ AlokJha申し訳ありません、このプラグインを実際に使用したことはありません。しかし、あなたが参照したリンクでは、bootstrap-tableにPDFオプションがあったように見えますが、サポートされていないので、削除されました。参照してください:https://github.com/wenzhixin/bootstrap-table/commit/0679c9ed319b1629f2088cb9089acf856f4e87dd – Trevor

6

MS-Officeに関連する部分のみを使用するようにJSファイルを変更することで、同じ解決策を使用することができます。実際、Porwerpointテーブルを変換する関数はExcelとWordを変換する関数と同じです。

これを行うには、次ののすべてtableExport.js内容変更のみjquery.base64.jsファイル、およびファイルtableExport.jsが、必要があるでしょう:

/*The MIT License (MIT) 
Copyright (c) 2014 https://github.com/kayalshri/ 
Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the "Software"), to deal 
in the Software without restriction, including without limitation the rights 
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
copies of the Software, and to permit persons to whom the Software is 
furnished to do so, subject to the following conditions: 
The above copyright notice and this permission notice shall be included in 
all copies or substantial portions of the Software. 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
THE SOFTWARE.*/ 

(function($){ 
     $.fn.extend({ 
      tableExport: function(options) { 
       var defaults = { 
         separator: ',', 
         ignoreColumn: [], 
         tableName:'yourTableName', 
         type:'excel', 
         escape:'true', 
         htmlContent:'false', 
         consoleLog:'false' 
       }; 

       var options = $.extend(defaults, options); 
       var el = this; 

       if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){ 
        //console.log($(this).html()); 
        var excel="<table>"; 
        // Header 
        $(el).find('thead').find('tr').each(function() { 
         excel += "<tr>"; 
         $(this).filter(':visible').find('th').each(function(index,data) { 
          if ($(this).css('display') != 'none'){     
           if(defaults.ignoreColumn.indexOf(index) == -1){ 
            excel += "<td>" + parseString($(this))+ "</td>"; 
           } 
          } 
         }); 
         excel += '</tr>';      

        });     


        // Row Vs Column 
        var rowCount=1; 
        $(el).find('tbody').find('tr').each(function() { 
         excel += "<tr>"; 
         var colCount=0; 
         $(this).filter(':visible').find('td').each(function(index,data) { 
          if ($(this).css('display') != 'none'){ 
           if(defaults.ignoreColumn.indexOf(index) == -1){ 
            excel += "<td>"+parseString($(this))+"</td>"; 
           } 
          } 
          colCount++; 
         });               
         rowCount++; 
         excel += '</tr>'; 
        });     
        excel += '</table>' 

        if(defaults.consoleLog == 'true'){ 
         console.log(excel); 
        } 

        var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.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 += excel; 
        excelFile += "</body>"; 
        excelFile += "</html>"; 

        var base64data = "base64," + $.base64.encode(excelFile); 
        window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data); 

       } 


       function parseString(data){ 

        if(defaults.htmlContent == 'true'){ 
         content_data = data.html().trim(); 
        }else{ 
         content_data = data.text().trim(); 
        } 

        if(defaults.escape == 'true'){ 
         content_data = escape(content_data); 
        } 



        return content_data; 
       } 

      } 
     }); 
    })(jQuery); 

jspdfフォルダを含む他のすべてのファイルを削除できます。

この方法でテーブルをExcel、doc、PowerPointの形式にエクスポートすることができます(実際にはdocとpowerpointにエクスポートすると、Excelのスプレッドシートがドキュメントに埋め込まれるので、プラグインはすべて3つフォーマット)

は、私が良く、このために、サーバー側を使用することをお勧めしたいオリジナルのプラグインと同じように

+0

さて、私はこれを試し、あなたに戻ってきます。 –

関連する問題