我再一次需要做一些听起来很简单的事情,但实际上是令人沮丧地回避我。
在我公司的内部网站点上,我们有一个大型数据表,其中应用了javascript过滤器,以便管理员和其他相关方可以快速找到与它们相关的行。我正在使用的过滤器可以在http://tablefilter.free.fr/找到。
当我需要一个按钮将过滤后的结果导出到Excel以便管理员可以离线访问数据时,我的问题出现了。有很多直接的选项可以将HTML表格导出为excel,但我一直无法弄清楚如何将过滤后的结果导出。 (注意:此内部网站点只能通过IE访问)
有一个函数作为javascript表过滤器GetFilteredData()的一部分,它将获取过滤后的数据单元并将它们输入到数组中,我认为称为filteredData []。这个数组的格式如下:[rowindex,[value1,value2,value3 ...]]。
那么如何将此数组转换为Excel或csv文件?同样,这只能由IE访问,因此可以接受activeX对象和控件。
另外我应该注意到我不能使用服务器端技术,因此请将您的响应限制在HTML,javascript和activeX的范围内。谢谢!
答案 0 :(得分:2)
仅供参考:DataTables有一个很好的插件,名为TableTools,它可以在客户端将表导出到csv。它是使用Flash实现的。如果您对DataTables的过滤器感到满意,我认为这将是一个很好的解决方案。
<强> http://www.datatables.net/extras/tabletools/ 强>
答案 1 :(得分:0)
如果您从版本8开始使用IE
,则可以使用data:
个网址。只需生成URL并使用location.href
将borwser指向那里。 CSV中的数据可以通过javascript和base64编码生成。
答案 2 :(得分:-1)
您可能想要考虑一种依赖于字符串操作的方法。
拥有此数组后,您可以将其转换为JSON字符串。试试这个流行的轻量级库(json2.js):
https://github.com/douglascrockford/JSON-js
示例:
text = JSON.stringify(['e', {pluribus: 'unum'}]);
// text is '["e",{"pluribus":"unum"}]'
你应该有像
这样的东西var dataString = '["rowindex",["value1","value2","value3"]]'
此时你可以在字符串上使用一些正则表达式替换来将其格式化为任一样式。