我怎样才能从一个网页上把表格导出到Excel。我希望导出的结果包含所有的格式和颜色。
这是一个php,但你也许可以把它改成javascript。
<?php>
$colgroup = str_repeat("<col width=86>",5);
$data = "";
$time = date("M d, y g:ia");
$excel = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\">
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html>
<head>
<meta http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\" />
<style id=\"Classeur1_16681_Styles\">
.xl4566 {
color: red;
}
</style>
</head>
<body>
<div id=\"Classeur1_16681\" align=center x:publishsource=\"Excel\">
<table x:str border=0 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\">
<colgroup>$colgroup</colgroup>
<tr><td class=xl2216681><b>Col1</b></td><td class=xl2216681><b>Col2</b></td><td class=xl2216681 ><b>Col3</b></td><td class=xl2216681 ><b>Col4</b></td><td class=xl2216681 ><b>Col5</b></td></tr>
<tr><td class=xl4566>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
</table>
</div>
</body>
</html>";
$fname = "Export".time().".xls";
$file = fopen($fname,"w+");
fwrite($file,$excel);
fclose($file);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.basename($fname).'"');
readfile($fname);
unlink($fname); ?>
这实际上比你想象的要简单得多:"只要"把HTML表格(即:表格的HTML代码)复制到剪贴板中。Excel知道如何对HTML表格进行解码;它甚至会尝试保留这些属性。
困难的部分是"将表复制到剪贴板",因为没有标准的方法从JavaScript访问剪贴板。请看这篇博文。[用JavaScript访问系统剪贴板--一个圣杯?
现在你所需要的是作为HTML的表格。我建议使用jQuery和html()方法。
有两种实用的方法可以自动做到这一点,而只有一种方案可以在所有的浏览器中使用。 首先,你应该使用开放的xml规范来建立excel表。微软有免费的插件,使这种格式也可用于旧的office版本。从office 2007开始,开放xml就是标准。两种方式很明显,即服务器端或客户端。
客户端的实现使用新的CSS标准,允许你存储数据,而不仅仅是数据的URL。这是一个很好的方法,因为你不需要任何服务器调用,只需要数据和一些JavaScript。糟糕的是,微软在目前的IE(我不知道IE9)版本中不支持它的所有部分。微软限制数据为图片,但我们需要一个文档。在火狐浏览器中,它工作得很好。对我来说,IE是一个致命的问题。
另一种方法是使用一个服务器端的实现。应该有很多针对所有语言的开放式XML的实现。你只需要选择一个就可以了。在大多数情况下,这将是修改Viewmodel以产生Document的最简单的方法,但可以肯定的是,你可以将所有的数据从客户端送回服务器并做同样的事情。