html页面表格导出到excel

几种把html页面表格导出到excel的方法比较。

表格例子如下:

<table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">

<tr>

<td colspan="5" align="center">html 表格导出道Exceltd>

tr>

<tr>

<td>列标题1td>

<td>列标题2td>

<td>类标题3td>

<td>列标题4td>

<td>列标题5td>

tr>

<tr>

<td>aaatd>

<td>bbbtd>

<td>ccctd>

<td>dddtd>

<td>eeetd>

tr>

<tr>

<td>AAAtd>

<td>BBBtd>

<td>CCCtd>

<td>DDDtd>

<td>EEEtd>

tr>

<tr>

<td>FFFtd>

<td>GGGtd>

<td>HHHtd>

<td>IIItd>

<td>JJJtd>

tr>

table>

1、js的方法

A、将整个表格拷贝到EXCEL中

function method1(tableid) {

var curTbl = document.getElementById(tableid);

var oXL = new ActiveXObject("Excel.Application");

var oWB = oXL.Workbooks.Add();

var oSheet = oWB.ActiveSheet;

var sel = document.body.createTextRange();

sel.moveToElementText(curTbl);

sel.select();

sel.execCommand("Copy");

oSheet.Paste();

oXL.Visible = true;

}

B、读取表格中每个单元到EXCEL中:

function method2(tableid)

{

var curTbl = document.getElementById(tableid);

var oXL = new ActiveXObject("Excel.Application");

var oWB = oXL.Workbooks.Add();

var oSheet = oWB.ActiveSheet;

var Lenr = curTbl.rows.length;

for (i = 0; i < Lenr; i++)

{

var Lenc = curTbl.rows(i).cells.length;

for (j = 0; j < Lenc; j++)

{

oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;

}

}

oXL.Visible = true;

}

c、把表格输出到另一个页面,然后存成cvs格式

function getXlsFromTbl(inTblId, inWindow)

{

try {

var allStr = "";

var curStr = "";

if (inTblId != null && inTblId != "" && inTblId != "null") {

curStr = getTblData(inTblId, inWindow);

}

if (curStr != null) {

allStr += curStr;

}

else {

alert("你要导出的表不存在");

return;

}

var fileName = getExcelFileName();

doFileExport(fileName, allStr);

}

catch(e) {

alert("导出发生异常:" + e.name + "->" + e.description + "!");

}

}

function getTblData(inTbl, inWindow) {

var rows = 0;

var tblDocument = document;

if (!!inWindow && inWindow != "") {

if (!document.all(inWindow)) {

return null;

}

else {

tblDocument = eval(inWindow).document;

}

}

var curTbl = tblDocument.getElementById(inTbl);

var outStr = "";

if (curTbl != null) {

for (var j = 0; j < curTbl.rows.length; j++) {

for (var i = 0; i < curTbl.rows[j].cells.length; i++) {

if (i == 0 && rows > 0) {

outStr += " /t";

rows -= 1;

}

outStr += curTbl.rows[j].cells[i].innerText + "/t";

if (curTbl.rows[j].cells[i].colSpan > 1) {

for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {

outStr += " /t";

}

}

if (i == 0) {

if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {

rows = curTbl.rows[j].cells[i].rowSpan - 1;

}

}

}

outStr += "/r/n";

}

}

else {

outStr = null;

alert(inTbl + "不存在 !");

}

return outStr;

}

function getExcelFileName() {

var d = new Date();

var curYear = d.getYear();

var curMonth = "" + (d.getMonth() + 1);

var curDate = "" + d.getDate();

var curHour = "" + d.getHours();

var curMinute = "" + d.getMinutes();

var curSecond = "" + d.getSeconds();

if (curMonth.length == 1) {

curMonth = "0" + curMonth;

}

if (curDate.length == 1) {

curDate = "0" + curDate;

}

if (curHour.length == 1) {

curHour = "0" + curHour;

}

if (curMinute.length == 1) {

curMinute = "0" + curMinute;

}

if (curSecond.length == 1) {

curSecond = "0" + curSecond;

}

var fileName = "table" + "_" + curYear + curMonth + curDate + "_"

+ curHour + curMinute + curSecond + ".csv";

return fileName;

}

function doFileExport(inName, inStr) {

var xlsWin = null;

if (!!document.all("glbHideFrm")) {

xlsWin = glbHideFrm;

}

else {

var width = 6;

var height = 4;

var openPara = "left=" + (window.screen.width / 2 - width / 2)

+ ",top=" + (window.screen.height / 2 - height / 2)

+ ",scrollbars=no,width=" + width + ",height=" + height;

xlsWin = window.open("", "_blank", openPara);

}

xlsWin.document.write(inStr);

xlsWin.document.close();

xlsWin.document.execCommand(‘Saveas‘, true, inName);

xlsWin.close();

}

总结:比较上面3种方法,感觉第一种方法比较完美一些,因为这种方法比较完整的输出表格的格式。但,第一和第二种方法都用了ActiveX 对象,对客户端的安全有要求,而且最大的问题还有一个,就是excel 对象无法关闭。第3中方法虽然没有用ActiveX 对象,但是用了弹出窗口输出, 如果禁止了弹出窗口则无法使用。

对于execl 对象无法关闭的问题,下面的方法是一个权宜方法:

function Cleanup() {

window.clearInterval(idTmr);

CollectGarbage();

}

调用方法:

idTmr = window.setInterval("Cleanup();",1);

2、Asp.net(c#)中的方法

这种方法其实类似上面的js的第3中方法(也可以在其他的web脚本来实现,比如asp中vbscript,或者php),把表格用文件流的方式

输出为excel。实例代码如下:

public void OutPutExcel(string title)

{

Response.Clear();

Response.Buffer = true;

Response.Charset = "utf-8";

Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(title + ".xls"));

Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");

Response.ContentType = "application/ms-excel";

Page.EnableViewState = false;

System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

this.Page.RenderControl(oHtmlTextWriter);

string temp = oStringWriter.ToString();

Response.Write(temp);

Response.End();

}

这种方法的从本质上说并非标准的excel格式,不过把html格式的文件另存为excel的格式,然后用excel打开罢了。

时间: 2024-10-10 18:01:48

html页面表格导出到excel的相关文章

html页面表格导出到excel总结

转载:http://www.cnblogs.com/liuguanghai/archive/2012/12/31/2840262.html <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td colspan="5" align=&qu

JS 将页面上的表格导出为 Excel 文件

如果在页面上展示了一个表格,想把这个表格导出为Excel文件,那么在要求不高的情况下,可以直接利用 JavaScript 的 Blob 和 Object URL 特性将表格导出.不过,这就是利用了 Excel 能打开 HTML 文档的特性,所以导出的表格实际上是一个 HTML 文档,并且其扩展名只能为 .xls,而不能是 .xlsx,否则Excel无法打开.(有使用JavaScript生成真正Excel文件的方案,以后再研究.) 实例: <!DOCTYPE html> <html>

将HTML表格导出到EXCEL,兼容Firefox,支持中文

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta http-equiv="Content

MVC把表格导出到Excel

有关Model: namespace MvcApplication1.Models { public class Coach { public int Id { get; set; } public string Name { get; set; } } } HomeController中,借助GridView控件把内容导出到Excel: using System.Collections.Generic; using System.IO; using System.Linq; using Sys

将表格导出为excel

1 <table id="tableExcel" border="1"> 2 <tr> 3 <th>零</th> 4 <th>一</th> 5 <th>二</th> 6 <th>三</th> 7 <th>四</th> 8 </tr> 9 <tr> 10 <td>万籁寂无声</td&g

通过前端js将页面表格导出为PDF(二)

前面我说道了,将页面的表格导出为pdf,通过我给出的代码完好的实现了其需求,但是没过几天,又说不行了,因为我的表格是按照最多26行就进行分页,如果表格行数一多,就要点击下一页再进行pdf的导出,因为是面向客户的,所以要尽量减少用户的操作,因此要改成,一键导出所有的表格,然后自动分页,每页再加上特定的图片.我就日了@#@#@!这是....,没办法,改呗,前前后后折腾了两天,终于让我给整出来了,不容易啊!真的的是有需求才有动力啊! 先说一下我的方式:首先还是按照正常的进行分页显示,当点击导出pdf按

jsp 页面内容导出到Excel中

日常使用网络资源时经常需要把网页中的内容下载到本地,并且导出到Excel中,现在介绍一种非常简单的方式实现网络资源的下载.只需要讲jsp的最上面加上一句话 <% response.reset(); response.setContentType("application/vnd.ms-excel;charset=GBK"); %> 就可以将网页的内容导出为Excel. 目前给出的例子为了方便起见,就是使用了纯粹的静态页面,一个table其中有一行是标题,一行是内容,但是实际

通过前端js将页面表格导出为PDF

最近工作太忙了,要同时用django重构两个系统,前后端都是我一个人写,前端要设计大量的表单,后端要处理大量的数据,身心俱疲啊!周末都没空,有半个月没有写博客了,今天没心情加班,腾出时间写写这半个月积累的技术经验. 因为开发的系统是服务于酒店的,需要定期和酒店对账,所以要将表格导出为execl表格,这要求简单,在前端写写js代码就行了:后来又改需求,execl不行,会被人为改动,要导出为pdf,还要每页加上公司的logo和其他乱七八糟的东西:没办法,只能去github上看看有没有好的第三方插件了

mysql数据库表格导出为excel表格

在本地数据库中操作如下: 由于excel表格的编码是GBK,所以导出时要加一个设置字符编码: select * from 某个表 into outfile 'd:/文件名.xls' CHARACTER SET gbk;