posts - 22, comments - 5, trackbacks - 0, articles - 11

在网上搜索到几种方法,经测试整理得出二种比较简单而且可行方法,

第一种:使用JAVASCRIPT,不用重新从 Database 获得数据.直接把网页上面的表格保存下来.

<table id = "export">
    <tr><td>A</td></tr>
    <tr><td>B</td></tr>
</table>

<input type=button name="out_excel" value="Convert To Excel" onclick="AutomateExcel('export');">
<script language="javascript">

function AutomateExcel(id) 
{
    var table;
    table = document.getElementById(id);  
    var hang= table.rows.length;  
    var lie = table.rows(0).cells.length; 
    var oXL = new ActiveXObject("Excel.Application"); 
    oXL.Visible = true; 
    var oWB = oXL.Workbooks.Add(); 
    var oSheet = oWB.ActiveSheet; 

    // Add table headers going cell by cell. 
    for (i=0;i <hang;i++) 
    
        for(j=0;j <lie;j++) 
        
            oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText.replace("&nbsp;",""); 
        } 
    } 
    oWB.SaveAs("c:\report.xls"); 
    oSheet.ptintout; 

    oXL.UserControl = true; 

</script>


在整个过程中调用Excel.Application,需要降低IE的安全级别.是我觉得很不好的一点,有人说把网站加到信任站点,不过我没试.
在使用这种方法中,如果是一个简单正常的规范表格,保存下来的文件会正常,但是比较复杂的表格就可能导错数据.或行列数错.
也可能需要去改进JAVASCRIPT来调整整个表格,不过我觉得太麻烦.

第二种 使用 ms-excel ,需重新从 Database 获得数据,而且最好是表格单独一个页面.

建立一个Button,建立一个新页面,点击Button开新页面的IE窗口.这个窗口内容就是你要导出的表格

在新的页面代码中加入:

<%Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>") %>
<%response.ContentType="application/vnd.ms-excel"%>

第一行是防止中文会乱码.
第二行是保存为Excel.


这种方法我个人比较喜欢,因为当你点击打开新的IE窗口时,它不会显示出一样的表格出来,而是直接询问你是要打开还是保存.
就好像我们下载文件一样,然后直接询问我们要打开还是保存.
但在调试的过程中,刚开始会捕捉到一些不是你想要的东西出来,可能本地防火墙设置有问题.(请设置防火墙)

当然还有各种方法,以上二种是我觉得比较简单的方法,放在这里供大家分享跟讨论.GOOD LUCK!

Feedback

# re: 网页上的表格导出到Excel文件初次尝试心得  回复  更多评论   

2011-02-21 18:20 by 林天日
生成表格后的 表格 格式怎么修改 就是每个表格的宽度
只有注册用户登录后才能发表评论。