2014-10-30 91 views
0

我有幾個HTML表格,我希望允許用戶將其內容導出到csv。將表格導出爲CSV - 將字符串格式化問題導入到單獨的單元格中

我現在有這個解決方案實現的,它幾乎完美的作品:

function exportTableToCsv($table, filename) { 

    var $rows = $table.find('tr:has(td,th)'), 

     tmpColDelim = String.fromCharCode(11), 
     tmpRowDelim = String.fromCharCode(0), 

     colDelim = ' ', 
     rowDelim = '"\r\n"', 

     csv = '"' + $rows.map(function (i, row) { 
      var $row = $(row), 
       $cols = $row.find('td,th'); 

      return $cols.map(function (j, col) { 
       var $col = $(col), 
        text = $col.text(); 

       return text.replace('"', '""'); 

      }).get().join(tmpColDelim); 

     }).get().join(tmpRowDelim) 
      .split(tmpRowDelim).join(rowDelim) 
      .split(tmpColDelim).join(colDelim) + ' ', 

     // Data URI 
     csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv); 

    $(this) 
     .attr({ 
     'download': filename, 
      'href': csvData, 
      'target': '_blank' 
    }); 
} 

我稱之爲是這樣的:現在

$(".ExportSummary").on('click', function() { 
    exportTableToCsv.apply(this, [$('#SummaryTable'), 'ExportSummary.csv']); 
}); 

Fiddle Example


我的問題是,我無法得到st通過在Excel中將<td>放在單獨的單元格中來工作。我只是不知道如何將文本放置在分隔的單元格中,因爲它被映射在一起成爲整個字符串內容。

我想要這個JsFiddle提供的所需輸出 - 但這個解決方案不能提供選擇文件名和設置適當的內容類型(application/csv)被瀏覽器識別的能力。

任何幫助表示讚賞。提前致謝!

回答

1

http://en.wikipedia.org/wiki/Comma-separated_values#Example

美國/英國的CSV文件小數點分隔符是一個句點/句號和值分隔符是逗號。 歐洲CSV/DSV文件中的小數點分隔符是一個逗號和值分隔符是分號

我已經修改了一點點你的腳本:

function exportTableToCsv($table, filename) { 
... 
     // actual delimiter characters for CSV format 
     colDelim = ';', 
     rowDelim = '\r\n', 

     // Grab text from table into CSV formatted string 
     csv = $rows.map(function (i, row) { 
      var $row = $(row), 
       $cols = $row.find('td,th'); 

      return $cols.map(function (j, col) { 
       var $col = $(col), 
        text = $col.text(); 
      ... 

http://jsfiddle.net/mu5g1a7x/2/

讓我知道,如果我正確理解你。