使用asp、php等动态网页脚本可以轻松实现把服务器端的数据生成网页数据表,而客户端则可以方便地使用浏览器来查看生成的数据表。但有些时候需要把这些数据表保存为电子表格,例如MS Excel的格式,以方便二次处理(例如打印)或日后查看。在安装有IE浏览器及Excel的客户端电脑,有两种方便的方法可以实现网页数据表到Excel电子表格的转换:
- 在IE上拖动鼠标把数据表的数据都选中(俗称“拖黑”),接着复制(按组合键Ctrl+C或点选菜单 编辑->复制),然后在Excel中新建一空白电子表格,再粘贴(按组合键Ctrl+V或点选菜单 编辑->粘贴)。这样数据就到了Excel中,适当排版后保存即可。
- 在IE中右键点击数据表,在弹出的菜单中选择“导出到Microsoft Excel...”一项,Excel即会启动并获取网页上的数据表。排版后保存即可。
上述第二种方法有一定局限性:似乎不是所有版本的Excel都会在IE的右键菜单中添加“导出”菜单项,不过我知道XP及2003都会添加;各种原因可能导致IE的右键菜单中没有“导出”一项;如果IE中的当前页面要靠session验证,则用此法无法导出成功,因为Excel试图从服务器端获取数据时没有正确的session。
以上的两种方法是在客户端作 网页->Excel电子表格 的转换的。其实这个工作可以在服务器端完成,而且从 数据->Excel电子表格 的一步转换比 数据->网页数据表->Excel电子表格 的两次转换显然更快捷高效。
法一是利用Excel可以打开.cvs的逗号格式数据,而.cvs本质上是文本格式,故我们可以很容易编写 数据->.cvs 转换的脚本程序,这里就不啰嗦了。
法二则是利用Excel可以打开扩展名为.xls,但内容是HTML表格的文件。于是我们只需要输出一个.xls文档的头部标记,然后仍按 数据->网页 转换来编写脚本即可。下面举一用php实现的例子:
<?php
header("Content-Type: application/vnd.ms-excel");
// 下面这一行在实际使用时文件名excel.xls可以适当修改
header("Content-Disposition: attachment; filename=excel.xls");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN">
<head>
<!-- 下面这一行要设置好正确的字符编码 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>他</title>
<style type="text/css">
/* 修改CSS样式表可以改变最终Excel数据表的样式,但是Excel并不支持所有的CSS样式 */
table {
border-collapse:collapse;
border:2px solid #000;
}
th, td {
border:1px solid #999;
}
th {
font-weight:bold;
}
</style>
</head><body>
<table>
<tr>
<th>我</th>
<th>ABCD</th>
<td>你</td>
</tr>
<tr>
<th>5678</th>
<td colspan="2">123</td>
</tr>
</table>
</body>
</html>
下图是用Firefox打开上例网页时的提示。

打开此文件后则如下图所示:

试验的系统是Excel 2002(即XP),对CSS的样式表识别并不是十分好,一般需要排版后再保存一次,同时也好让Excel把文件存为正确的.xls格式。
用户登录





