将html表格导出到csv

我正在尝试在我的网站中添加csv下载选项的function。 它应该将网站中的html表格转换为csv内容并使其可下载。 我一直在通过互联网寻找一个好的插件,并find一些像http://www.dev-skills.com/export-html-table-to-csv-file/有用的,但它使用PHP脚本做下载部分。 我想知道是否有一个纯粹的JavaScript库可用于执行此function使用服务器端的软件如node.js而不使用PHP?

只使用jQuery和vanilla Javascript

出口到HTML表-AS-CSV文件-使用- 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 :在上面的脚本之前添加对两个库的脚本引用。

tableselect器是作为一个例子,可以调整,以适应您的需求。

它仅适用于支持完整Data URI浏览器:Firefox,Chrome和Opera,不在IE中,只支持将二进制图像数据embedded到页面的Data URIs

要获得完整的浏览器兼容性,您必须使用稍微不同的方法,这需要服务器端脚本echo显CSV。

http://jordiburgos.com/post/2014/excellentexport-javascript-export-to-excel-csv.html有一个非常简单的免费和开源的解决scheme

首先从https://github.com/jmaister/excellentexport/releases/tag/v1.4下载javascript文件和示例文&#x4EF6;

html页面如下所示。

确保JavaScript文件位于相同的文件夹中,或相应地更改HTML文件中脚本的path。

 <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> 

这很容易使用,因为我已经尝试了大多数其他方法。

你不需要在服务器端的PHP脚本。 在接受数据URI的浏览器中仅在客户端执行此操作:

 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中testing。

要testing,只需复制上面的URI并粘贴到您的浏览器地址栏。 或者在HTML页面中testing下面的锚点:

 <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> 

要创build内容,从表中获取值,可以使用MelanciaUK提到的table2CSV,并执行:

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

我发现有一个这样的图书馆。 请看这里的例子:

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 

通过添加脚本启用button,如:

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

出于某种原因,Excel导出导致损坏的文件,但可以修复。 或者,禁用excel并使用csv导出。