2014-10-30 2 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 форматирование кольца для работы, помещая <td> в отдельные ячейки в Excel. Я просто не знаю, как получить текст, который будет помещен в отдельные ячейки, поскольку он сопоставляется вместе со всем содержимым строки.

Я хочу получить нужный результат, который предоставляется с этим JsFiddle, но это решение не дает возможности выбора имени файла и установки подходящего типа контента (application/csv), который будет распознан браузером.

Любая помощь приветствуется. Заранее спасибо!

ответ

1

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

USA/UK 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/

Позвольте мне знать, если я правильно понял.

Смежные вопросы