我有以下html文件:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
<head>
</head>
<body>
<p align="center"><strong>Claims Search Results</strong></p>
<table id="ClaimsListPrint" class="printClaims">
<thead>
<tr style="background-color: rgb(241, 241, 241);">
<th style="background-color: rgb(215, 227, 235);">
Member
</th>
<th style="background-color: rgb(215, 227, 235);">
Date of Service
</th>
<th style="background-color: rgb(215, 227, 235);">
Provider
</th>
<th style="background-color: rgb(215, 227, 235);">
Claim Type
</th>
<th style="background-color: rgb(215, 227, 235);">
Status
</th>
<th style="background-color: rgb(215, 227, 235);">
Billed Amount
</th>
<th style="background-color: rgb(215, 227, 235);">
Paid by Plan
</th>
<th style="background-color: rgb(215, 227, 235);">
Member Responsiblity
</th>
</tr>
</thead>
<tbody>
<tr style="background-color: rgb(255, 255, 240);" class="claim">
<td class="claim-member">
John Sample
</td>
<td class="claim-dateOfService">
02/27/2011
</td>
<td class="claim-provider">
TestProv1
</td>
<td class="claim-claimType">
Medical
</td>
<td class="claim-status">
Processed
</td>
<td class="claim-billedAmount">
$145
</td>
<td class="claim-paidByPlan">
$125
</td>
<td class="claim-memberResponsibility">
$25
</td>
</tr>
<tr style="background-color: rgb(241, 241, 241);" class="claim">
<td class="claim-member">
John Sample
</td>
<td class="claim-dateOfService">
02/27/2011
</td>
<td class="claim-provider">
TestProv1
</td>
<td class="claim-claimType">
Medical
</td>
<td class="claim-status">
In-Process
</td>
<td class="claim-billedAmount">
-
</td>
<td class="claim-paidByPlan">
-
</td>
<td class="claim-memberResponsibility">
-
</td>
</tr>
</tbody>
</table>
</body>
</html>
我希望最终用户能够克服文件中的链接,如下所示:
<a id="link3" class="links" href="home.html">Export to Microsoft Excel</a>
当他们点击它时,我希望将表导出为csv文件。我怎么能做到这一点?我可以使用Javascript或PHP或其他任何方式吗?
答案 0 :(得分:5)
考虑使用jQuery插件:HTML Table to CSV
这是一个单行:
$('#mytable').table2CSV();
您可以在此HTML Table To CSV demo上看到这一点。
答案 1 :(得分:1)
无论您使用什么语言生成页面,我都会将其导出。如果您已在其他地方拥有数据,则解析HTML页面以生成CSV是没有意义的。如何生成页面?
答案 2 :(得分:1)
如果您希望下载此CSV文件,则可以使用PHP修改文档标题,以告知浏览器强制下载文件。我使用以下函数强制下载现有文件的文件,但您可以修改它以输出您通过进行一些修改即时生成的CSV文件。或者,您可以保存CSV文件并使用它来下载它。
顺便说一句,这不是我原来的代码。我在StackOverflow的其他地方找到了它,它对我来说很有用。function download($filePath) {
if(headers_sent()) die('Headers alread sent. Download cannot initialize.');
// Required for some browsers
if (ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off');
// File Exists?
if( file_exists($filePath) ){
// Parse Info / Get Extension
$fsize = filesize($filePath);
$path_parts = pathinfo($filePath);
$ext = strtolower($path_parts["extension"]);
// Determine Content Type
switch ($ext) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filePath)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fsize);
ob_clean();
flush();
readfile( $filePath );
} else {
die('File Not Found');
}
}
答案 3 :(得分:0)
在PHP中:
使用PHP的DOMDocument类将HTML文件加载到DOM对象结构中。
通过DomDocument解析,找到所需的元素,并将相关值提取到数组中。
使用PHP的fputsvc()函数将数组保存为CSV文件。
答案 4 :(得分:0)
尽管@ p.campbell有一个很好的解决方案,并且它为您提供格式化的CSV,但它不会为您提供 CSV下载。如果您希望最终用户以CSV格式下载,您可以使用PHP等服务器技术并将CSV作为响应类型返回。
我也同意@mrkmg。如果您有数据,请编写一些PHP以CSV格式返回数据。
http://mysite.com/data/csv
传入格式化数据,并在PHP中将响应类型更改为CSV。用户将获得一个很好的另存为... 对话框。我相信代码看起来像这样:
<?php
// We'll be outputting a CSV
header('Content-type: application/csv');
// It will be called downloaded.csv
header('Content-Disposition: attachment; filename="downloaded.csv"');
// Write CSV...
?>