jquery.table2excel 這個js套件可以將簡易的table轉出excel,最近使用時發現table中的textarea 元素轉出後在excel會是個元件,而不是在儲存格中的純文字,有點困擾所以看了一下source code,
發現裡面有對 input這個元素做處理,如法泡製一下,正規表示式-抓取html中 textarea中的資料,另外因textarea會有換行的問題,所以再將換行符號取代為 <br />,不過如果沒有加上style的話,excel開啟後對<br />的解譯會新增一列,所以再加上mso-data-placement:same-cell;後便可保持在同一個儲存格上囉~
function exclude_textareas(string) {
var _patt = /(<textarea [^>]*>(.*[\n]*.*)<\/textarea>)/i;
return string.replace(/<textarea [^>]*>.*[\n]*.*<\/textarea>/ig, function myFunction(x) {
var res = _patt.exec(x);
if (res !== null && res.length >= 2) {
return res[2].replace('\n', '<br style="mso-data-placement:same-cell;" />');
} else {
return "";
}
});
}
/<