将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 :在上面的脚本之前添加对两个库的脚本引用。
table
select器是作为一个例子,可以调整,以适应您的需求。
它仅适用于支持完整Data URI
浏览器:Firefox,Chrome和Opera,不在IE中,只支持将二进制图像数据embedded到页面的Data URIs
。
要获得完整的浏览器兼容性,您必须使用稍微不同的方法,这需要服务器端脚本echo
显CSV。
首先从https://github.com/jmaister/excellentexport/releases/tag/v1.4下载javascript文件和示例文件
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导出。