2017-06-29 49 views
1

我試圖將HTML表格複製到Word文件。將HTML表格複製到Word文件 - 覆蓋錯誤

在第一個所有的第一列複製到單詞表。 當代碼開始複製第二列時,它將覆蓋第一列。 我改變了列的索引 - >Cell(i,0)/Cell(i,1)

任何想法爲什麼會發生?

<script> 
    function tab() 
    { 
    var NUMBER_OF_ROWS = 22; 
    var NUMBER_OF_COLUMNS = 2; 

    var objWord = new ActiveXObject("Word.Application"); 
    objWord.Visible = True 
    Set objDoc = objWord.Documents.Add(); 

    var objRange = objDoc.Range(); 
    objDoc.Tables.Add (objRange, NUMBER_OF_ROWS, NUMBER_OF_COLUMNS); 
    var objTable = objDoc.Tables(1); 

    var thisTable = $(' .ms-table'); 

    for (var i=0;i<thisTable.rows.length;i++) 
    { 
     var oCell = thisTable.rows.item(i).cells; 
     objTable.Cell(i,0).Range.Text = oCell.item(0).innerText; 
    } 

    for (var i=0;i<thisTable.rows.length;i++) 
    { 
     var oCell = thisTable.rows.item(i).cells; 
     objTable.Cell(i,1).Range.Text = oCell.item(1).innerText; 
    } 

    objTable.AutoFormat(9) 
    } 
    </script> 

回答

0

請看看下面的JavaScript代碼是有幫助的:

的JavaScript:

 if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") { 
    (function($) { 
     $.fn.wordExport = function(fileName) { 
      fileName = typeof fileName !== 'undefined' ? fileName : "jQuery-Word-Export"; 
      var static = { 
       mhtml: { 
        top: "Mime-Version: 1.0\nContent-Base: " + location.href + "\nContent-Type: Multipart/related; boundary=\"NEXT.ITEM-BOUNDARY\";type=\"text/html\"\n\n--NEXT.ITEM-BOUNDARY\nContent-Type: text/html; charset=\"utf-8\"\nContent-Location: " + location.href + "\n\n<!DOCTYPE html>\n<html>\n_html_</html>", 
        head: "<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<style>\n_styles_\n</style>\n</head>\n", 
        body: "<body>_body_</body>" 
       } 
      }; 
      var options = { 
       maxWidth: 624 
      }; 
      // Clone selected element before manipulating it 
      var markup = $(this).clone(); 

      // Remove hidden elements from the output 
      markup.each(function() { 
       var self = $(this); 
       if (self.is(':hidden')) 
        self.remove(); 
      }); 

      // Embed all images using Data URLs 
      var images = Array(); 
      var img = markup.find('img'); 
      for (var i = 0; i < img.length; i++) { 
       // Calculate dimensions of output image 
       var w = Math.min(img[i].width, options.maxWidth); 
       var h = img[i].height * (w/img[i].width); 
       // Create canvas for converting image to data URL 
       var canvas = document.createElement("CANVAS"); 
       canvas.width = w; 
       canvas.height = h; 
       // Draw image to canvas 
       var context = canvas.getContext('2d'); 
       context.drawImage(img[i], 0, 0, w, h); 
       // Get data URL encoding of image 
       var uri = canvas.toDataURL("image/png"); 
       $(img[i]).attr("src", img[i].src); 
       img[i].width = w; 
       img[i].height = h; 
       // Save encoded image to array 
       images[i] = { 
        type: uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")), 
        encoding: uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")), 
        location: $(img[i]).attr("src"), 
        data: uri.substring(uri.indexOf(",") + 1) 
       }; 
      } 

      // Prepare bottom of mhtml file with image data 
      var mhtmlBottom = "\n"; 
      for (var i = 0; i < images.length; i++) { 
       mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n"; 
       mhtmlBottom += "Content-Location: " + images[i].location + "\n"; 
       mhtmlBottom += "Content-Type: " + images[i].type + "\n"; 
       mhtmlBottom += "Content-Transfer-Encoding: " + images[i].encoding + "\n\n"; 
       mhtmlBottom += images[i].data + "\n\n"; 
      } 
      mhtmlBottom += "--NEXT.ITEM-BOUNDARY--"; 

      //TODO: load css from included stylesheet 
      var styles = ""; 

      // Aggregate parts of the file together 
      var fileContent = static.mhtml.top.replace("_html_", static.mhtml.head.replace("_styles_", styles) + static.mhtml.body.replace("_body_", markup.html())) + mhtmlBottom; 

      // Create a Blob with the file contents 
      var blob = new Blob([fileContent], { 
       type: "application/msword;charset=utf-8" 
      }); 
      saveAs(blob, fileName + ".doc"); 
     }; 
    })(jQuery); 
} else { 
    if (typeof jQuery === "undefined") { 
     console.error("jQuery Word Export: missing dependency (jQuery)"); 
    } 
    if (typeof saveAs === "undefined") { 
     console.error("jQuery Word Export: missing dependency (FileSaver.js)"); 
    } 
} 
$("a.jquery-word-export").click(function(event) { 
      $("#page-content").wordExport(); 
     }); 

HTML:

 <table class="ms-table"> 
    <tr> 
    <th>Company</th> 
    <th>Contact</th> 
    <th>Country</th> 
    </tr> 
    <tr> 
    <td>Alfreds Futterkiste</td> 
    <td>Maria Anders</td> 
    <td>Germany</td> 
    </tr> 
    <tr> 
    <td>Centro comercial Moctezuma</td> 
    <td>Francisco Chang</td> 
    <td>Mexico</td> 
    </tr> 
    <tr> 
    <td>Ernst Handel</td> 
    <td>Roland Mendel</td> 
    <td>Austria</td> 
    </tr> 
    <tr> 
    <td>Island Trading</td> 
    <td>Helen Bennett</td> 
    <td>UK</td> 
    </tr> 
    <tr> 
    <td>Laughing Bacchus Winecellars</td> 
    <td>Yoshi Tannamuri</td> 
    <td>Canada</td> 
    </tr> 
    <tr> 
    <td>Magazzini Alimentari Riuniti</td> 
    <td>Giovanni Rovelli</td> 
    <td>Italy</td> 
    </tr> 
</table> 
<button>tab</button> 

    <div class="col-xs-5"> 
       <a class="btn jquery-word-export" href="javascript:void(0)"> 
        <span class="word-icon">W</span> 
        Export as .doc 
       </a> 
      </div> 

支持.js文件:

  1. https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.min.js
+0

嘿,thannk。我的問題不是獲取數據,我的問題是把它放在單詞表中。第一列覆蓋第二列。 – uRIELk

+0

@uRIELk我已經編輯了答案now.Check this out。 –