2016-11-17 67 views
0

我試圖將一些數據從表中導出到一個CSV文件,而無需使用插件,所以我發現這個代碼:的Javascript導出表數據爲CSV不包含HTML標籤

jQuery("#exportButton").click(function (e) { 
    window.open('data:application/csv;charset=utf-8,' + jQuery('#myTable').html()); 
      e.preventDefault(); 
}); 

此代碼的工作,但它的儲蓄也是html標籤。 那麼我怎樣才能以類似的方式從表中導出數據,而無需在文件中的HTML標籤?

回答

1

你的問題對我很感興趣。所以我儘量和它的可能: https://jsfiddle.net/ouvaztan/

HTML:

<table id="customers"> 
    <tbody><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> 
</tbody></table> 

JS:

$(function() { 
    var link = document.createElement('a'); 
    var data = ($("#customers").text().trim().replace(/[\n]+/g, ";").replace(/ /g, "").replace(/;;;/g, ";\n") + ";").replace(/\n/g, "\r\n"); 
    link.download = "test.csv"; 
    link.href = 'data:application/csv;base64,' + btoa(data); 
    link.click(); 
}); 

有一個限制: 所有行和列必須包含文本和合並單元格/行跨度是不可能

1

只是爲了提取文本的問題,您可以使用.text()而不是.html()

但是,以特定格式提取文本會有點棘手。

相關問題