我试图在我的网站中添加CSV下载选项的功能。它应该将网站中存在的HTML表转换为CSV内容并使其可下载。我一直在通过互联网搜索一个很好的插件,并找到了一些有用的,如http://www.dev-skills.com/export-html-table-to-csv-file/,但它使用PHP脚本来做下载部分。我想知道是否有一个纯JavaScript库可以使用服务器端做此功能像node.js这样的软件不使用php??
我试图在我的网站中添加CSV下载选项的功能。它应该将网站中存在的HTML表转换为CSV内容并使其可下载。我一直在通过互联网搜索一个很好的插件,并找到了一些有用的,如http://www.dev-skills.com/export-html-table-to-csv-file/,但它使用PHP脚本来做下载部分。我想知道是否有一个纯JavaScript库可以使用服务器端做此功能像node.js这样的软件不使用php??
9条答案
按热度按时间70gysomp1#
应该可以在每个现代浏览器上工作,没有jQuery或任何依赖,这里是我的实现:
字符串
然后添加您的下载按钮/链接:
型
CSV文件是定时的,与默认的Excel格式兼容。
;
,如果您有用户在世界不同地区下载您的csv,这是有用的,因为他们可以使用Excel的另一个默认分隔符,有关更多信息,请参阅:https://superuser.com/a/606274/908273egmofgnx2#
只使用
jQuery
、vanillaJavascript
和table2CSV
库:export-to-html-table-as-csv-file-using-jquery
将此代码放入要在
head
部分加载的脚本中:字符串
备注:
需要jQuery和table2CSV:在上面的脚本之前添加对这两个库的脚本引用。
table
选择器用作示例,可以根据您的需要进行调整。它只适用于完全支持
Data URI
的浏览器:Firefox,Chrome和Opera,而不适用于IE,IE只支持Data URIs
将二进制图像数据嵌入到页面中。为了完全兼容浏览器,您必须使用稍微不同的方法,需要服务器端脚本来
echo
CSV。nwsw7zdq3#
在http://jordiburgos.com/post/2014/excellentexport-javascript-export-to-excel-csv.html上有一个非常简单的免费开源解决方案
首先从https://github.com/jmaister/excellentexport/releases/tag/v1.4下载JavaScript文件和示例文件
HTML页面看起来像下面。
确保JavaScript文件在同一个文件夹中,或者相应地更改html文件中脚本的路径。
字符串
这是非常容易使用,因为我已经尝试了大多数其他方法。
kkih6yb84#
在服务器端不需要PHP脚本。只在客户端,在接受Data URIs的浏览器中这样做:
字符串
数据URI将类似于:
型
您可以通过以下方式调用此URI:
window.open
window.location
要进行测试,只需复制上面的URI并粘贴到浏览器地址栏中。或者在HTML页面中测试下面的锚:
型
要创建内容,从表中获取值,您可以使用MelanciaUK提到的table2CSV并执行:
型
yuvru6vn5#
(1)这是针对此问题的原生JavaScript解决方案。它适用于大多数现代浏览器。
(2)如果你想要一个纯JavaScript库,FileSaver.js可以帮助你保存触发文件下载的代码片段。此外,FileSaver.js不会负责构建导出的内容。你必须自己构建你想要的格式的内容。
vohkndzv6#
现代解决方案
这里提出的大多数解决方案都将打破嵌套表或td元素中的其他元素。我经常在表中使用其他元素,但只想导出最顶层的表。我从Calumah中找到了一些代码,并添加了一些现代的ES6 JS。
使用textContent是比innerText更好的解决方案,因为innerText将返回td元素中的任何HTML。然而,即使textContent也会返回嵌套元素中的文本。更好的解决方案是在td上使用自定义数据属性,并从那里为CSV拉取值。
编码愉快!
字符串
编辑:cloneNode()更新为cloneNode(true)以获取内部信息
hmtdttj47#
使用上面的答案,但根据我的需要进行了修改。
我使用以下函数并导入到我的REACT文件,在那里我需要下载csv文件。
我在
th
元素中有一个span
标签。添加了大多数函数/方法的注解。字符串
当用户点击导出到csv时,它会在react中触发以下函数。
型
HTML表格元素示例。
型
oogrdqng8#
我发现有一个图书馆。请参阅这里的例子:
https://editor.datatables.net/examples/extensions/exportButtons.html
除了上面的代码外,还加载了以下JavaScript库文件以供本示例使用:
在HTML中,包含以下脚本:
字符串
通过添加以下脚本来启用按钮:
型
由于某种原因,Excel导出导致文件损坏,但可以修复。或者,禁用Excel并使用CSV导出。
kxkpmulp9#
在我的例子中,我需要MOST的基本功能来抓取HTML表数据并将其转换为csv文件。没有一个值会有干扰字符,所以我不需要任何转义或编码考虑。我也不喜欢声明单用途变量,除非这些变量在表达它们所包含的数据方面很有价值。
我无法让下载机制在Stacksnippet中工作,但这里有一个工作的jsfiddle demo。
将
my_report
更改为目标表的id
。“将
my_scraped_report.csv
更改为所需的下载文件的文件名。字符串
嘲笑于飞:
型