导出网页中的table到excel

还是那个客户的那个要求

他的意思其实就是要把数据库里的数据能够导出到excel

不过上次那个sql>>excel的功能我觉得不是很好,因为数据是导出来了,可是数据的相关属性和名称,每一列的数据分别是什么都看不到了。。必须对照着sql的列名来判断,这样比较麻烦,客户肯定也不会满意。。

于是决定试试看从网页中把表格直接生成excel,虽然不是直接从sql到excel,不过反而更加方便而且人性化。。

网上倒是找到了不少的资料,发现一段javascript的功能实现代码,很不错:
var elTable = document.getElementById("tb");
var oRangeRef = document.body.createTextRange();
oRangeRef.moveToElementText( elTable );
oRangeRef.execCommand( "Copy" );

var appExcel = new ActiveXObject( "Excel.Application" );
appExcel.Visible = true;
appExcel.Workbooks.Add().Worksheets.Item(1).Paste();
appExcel = null;

实现功能就是把id为tb的表格内的数据都生成为excel,我试试了可行,但是放到服务器来运行就是script error的提示,然后网上到处求问,也找了百度空间的几位高手朋友问了下,可是还是不得其法。。不过还是很感谢他们的热心帮助

没办法,我只能用别的方法来实现了,其实满喜欢上面的这个javascript的功能的,比较人性化。。可惜我黔驴技穷,无法用上它,哎!~

既然我帮客户用jsp写的程序,那么我就还是用jsp来实现这个功能吧。。

于是找到了这么一个方法:
原文出自:http://www.jsp.mlc.edu.tw/viewitem.jsp?itemid=0000000065

***************************************************************************************************
一、将网页资料以excel报表以线上浏览方式呈现
xls651.jsp原始码如下


<%@ page contentType="application/msexcel" %>
<!-- 以上这行设定本网页为excel格式的网页 -->
<%
   response.setHeader("Content-disposition","inline; filename=test1.xls");
   //以上这行设定传送到前端浏览器时的档名为test1.xls
   //就是靠这一行,让前端浏览器以为接收到一个excel档
%>
<html>
<head>
<title>Excel档案呈现方式</title>
</head>
<body>
  <table border="1" width="100%">
    <tr>
      <td>姓名</td><td>身份证字号</td><td>生日</td>
    </tr>
    <tr>
      <td>李玟</td><td>N111111111</td><td>1900/11/12</td>
    </tr>
    <tr>
      <td>梁静如</td><td>N222222222</td><td>1923/10/1</td>
    </tr>
    <tr>
      <td>张惠妹</td><td>N333333333</td><td>1934/12/18</td>
    </tr>
  </table>
</body>
</html>

二、将网页资料以excel报表以下载的方式呈现
这个jsp档和上一个差不多,只有差别在这一行:
线上浏览的方式: response.setHeader("Content-disposition","inline; filename=test1.xls");
下载的方式: response.setHeader("Content-disposition","attachment; filename=test2.xls");
附注: 1.以上纯以静态网页的方式呈现excel档,配合资料库,你便能以动态的报表方式做出excel报表了
2.完全不用安装任何元件,或只能受限於win平台,一个简单的方式解决你的报表需求
3.聪明的你,应该能举一反三,知道如何将网页资料以word的doc格式展现了吧!
(是不是只要把contentType改成"application/msword"以及filename的副档名改成.doc就可以了!)

***************************************************************************************************

试了一下,发现不错,于是就用这个来做了。。功能终于实现。。

细想一下,其实这个方法也蛮不错的,只是要实现功能的话,代码写起来要稍微比那个javascirpt麻烦点。也幸好office的功能比较强大,呵呵

感想:工作以后,按客户的要求,一直要做这个做那个,其实也正是因为这样,学会了很多东西,自学能力也增强不少,工作的这几个月几乎比在大学里几年中所学到的还要多。。。也许也正是因为这样吧,会有点点小小的成就感,也就让我更加喜欢工作,不觉得工作乏味,嘿~或者这也是一种动力吧

  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要将HTML表格导出Excel并支持Excel的函数,可以使用JavaScript。 首先,我们需要在HTML创建一个按钮,用于触发导出操作: ```html <button onclick="exportToExcel()">导出Excel</button> ``` 然后,在JavaScript,我们需要编写一个函数来导出HTML表格到Excel。可以使用第三方库如`tableexport.js`来实现这个功能。首先,我们需要在HTML文件引入该库: ```html <script src="tableexport/tableexport.js"></script> ``` 接下来,在JavaScript代码定义一个`exportToExcel`函数并在该函数使用`TableExport`库来导出表格为Excel文件,并支持Excel的函数: ```javascript function exportToExcel() { var table = document.getElementById("myTable"); // 获取表格元素 // 创建 TableExport 对象 var tableExport = new TableExport(table, { exportButtons: false, // 不显示导出按钮 filename: 'Excel文件名', // 设置导出文件名 sheetname: '工作表名', // 设置工作表名 exportFunction: 'xlsx' // 设置导出格式为Excel }); var exportData = tableExport.getExportData(); // 获取导出数据 var xlsxData = exportData.myTable.xlsx; // 获取Excel文件的二进制数据 saveXlsxToDisk(xlsxData); // 将二进制数据保存为Excel文件 } function saveXlsxToDisk(xlsxData) { var blob = new Blob([xlsxData], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); var url = URL.createObjectURL(blob); var a = document.createElement("a"); a.href = url; a.download = 'Excel文件名.xlsx'; // 设置下载文件名 a.click(); URL.revokeObjectURL(url); } ``` 以上代码,`myTable`是要导出的HTML表格的id,可以根据实际情况进行修改。`filename`和`sheetname`分别是导出Excel文件名和工作表名,可以根据需要自行设置。 当用户点击"导出Excel"按钮时,就会触发`exportToExcel`函数,该函数会将表格导出Excel文件并保存到磁盘上。 需要注意的是,由于涉及到文件下载,所以该方法需要在浏览器环境才能使用,而不能在服务器端运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值