2013-03-21 5 views
27

Я пытаюсь добавить функцию загрузки csv на моем сайте. Он должен преобразовать таблицу html, присутствующую на веб-сайте, в содержимое csv и сделать ее загружаемой. Ive искал через интернет для хорошего плагина и нашел некоторые usefule, такие как http://www.dev-skills.com/export-html-table-to-csv-file/ Но он использует PHP-скрипт для загрузки части. Мне было интересно, есть ли чистая библиотека javascript, доступная для этой функции, используя программные продукты на стороне сервера, такие как node.js, без использования php?export html table to csv

+2

Возможный дубликат [Экспорт в csv в jQuery] (http://stackoverflow.com/questions/4639372/export-to-csv-in-jquery) –

ответ

21

Использование только jQuery и ваниль Javascript:

export-to-html-table-as-csv-file-using-jquery

Поместите этот код в скрипт, который будет загружен в head разделе:

$(document).ready(function() { 
    $('table').each(function() { 
     var $table = $(this); 

     var $button = $("<button type='button'>"); 
     $button.text("Export to spreadsheet"); 
     $button.insertAfter($table); 

     $button.click(function() { 
      var csv = $table.table2CSV({ 
       delivery: 'value' 
      }); 
      window.location.href = 'data:text/csv;charset=UTF-8,' 
      + encodeURIComponent(csv); 
     }); 
    }); 
}) 

Примечания:

Требуется jQuery и table2CSV: Добавить скрипт ref для обеих библиотек перед сценарием выше.

В качестве примера используется селектор table и может быть отрегулирован в соответствии с вашими потребностями.

Он работает только в браузерах с полной поддержкой Data URI: Firefox, Chrome и Opera, а не в IE, который поддерживает только Data URIs для встраивания данных двоичного изображения в страницу.

Для полной совместимости с браузером вам придется использовать несколько иной подход, который требует сценария на стороне сервера для echo CSV.

+1

Привет ... спасибо за ответ ... но когда Я пытаюсь загрузить файл tabletoCsv из указанной вами ссылки .. он показывает ошибку «страница не найдена» – sam

+1

Привет @sam, вы можете найти библиотеку здесь: http://www.table2csv.com/ – melancia

+0

Спасибо за Ответить!!! Я действительно оцениваю вашу помощь !! Я нашел еще один интересный вариант после многого поиска http://www.datatables.net/examples/ – sam

5

Вам не нужен PHP-скрипт на стороне сервера. Делайте это в стороне клиента только в браузерах, которые принимают Data URIs:

data:application/csv;charset=utf-8,content_encoded_as_url 

URI-данных будет что-то вроде:

data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333 

Вы можете назвать этот URI по:

  • с использованием window.open
  • или установка window.location
  • или с помощью href привязки
  • , добавив атрибут загрузки, он будет работать в хроме, все равно придется тестировать в IE.

Чтобы проверить, просто скопируйте URI выше и вставьте адресную строку браузера.Или проверить ниже якоря в HTML странице:

<a download="somedata.csv" href="data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333">Example</a> 

Чтобы создать контент, получать значения из таблицы, вы можете использовать table2CSV упомянутые MelanciaUK и сделать:

var csv = $table.table2CSV({delivery:'value'}); 
window.location.href = 'data:application/csv;charset=UTF-8,' + encodeURIComponent(csv); 
8

Существует очень легко бесплатно и открытое решение источник в http://jordiburgos.com/post/2014/excellentexport-javascript-export-to-excel-csv.html

Сначала загрузите файл яваскрипта и файлы примеров из https://github.com/jmaister/excellentexport/releases/tag/v1.4

html-страница выглядит следующим образом.

Убедитесь, что файл javascript находится в одной папке или соответствующим образом изменил путь к скрипту в html-файле.

<html> 
<head> 
    <title>Export to excel test</title> 
    <script src="excellentexport.js"></script> 
    <style> 
     table, tr, td { 
      border: 1px black solid; 
     } 
    </style> 
</head> 
<body> 
    <h1>ExcellentExport.js</h1> 

    Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>. 

    <h3>Test page</h3> 

    <br/> 

    <a download="somedata.xls" href="#" onclick="return ExcellentExport.excel(this, 'datatable', 'Sheet Name Here');">Export to Excel</a> 
    <br/> 

    <a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable');">Export to CSV</a> 
    <br/> 

    <table id="datatable"> 
     <tr> 
      <th>Column 1</th> 
      <th>Column "cool" 2</th> 
      <th>Column 3</th> 
     </tr> 
     <tr> 
      <td>100,111</td> 
      <td>200</td> 
      <td>300</td> 
     </tr> 
     <tr> 
      <td>400</td> 
      <td>500</td> 
      <td>600</td> 
     </tr> 
     <tr> 
      <td>Text</td> 
      <td>More text</td> 
      <td>Text with 
       new line</td> 
     </tr> 
    </table> 

</body> 

Это очень легко использовать это, как я пытался большинство других методов.

+0

Не работает в IE9. – ajeh

+1

Можно ли использовать кнопку вместо якоря? – Hooli

+0

Не работайте, загрузите HTML-страницу. –

1

Я нашел, что для этого есть библиотека. Смотрите пример здесь:

https://editor.datatables.net/examples/extensions/exportButtons.html

В дополнение к указанному выше кода следующие файлы Javascript библиотеки загружаются для использования в этом примере:

В HTML, включают в себя следующие сценарии:

jquery.dataTables.min.js 
dataTables.editor.min.js 
dataTables.select.min.js 
dataTables.buttons.min.js 
jszip.min.js  
pdfmake.min.js 
vfs_fonts.js 
buttons.html5.min.js  
buttons.print.min.js 

Включить кнопки, добавив скрипты, такие как:

<script> 
$(document).ready(function() { 
    $('#table-arrays').DataTable({ 
     dom: '<"top"Blf>rt<"bottom"ip>', 
     buttons: ['copy', 'excel', 'csv', 'pdf', 'print'], 
     select: true, 
    }); 
}); 
</script> 

По какой-то причине экспорт экспорта в поврежденный файл, но может быть восстановлен. Кроме того, отключите excel и используйте экспорт csv.