求:如何将页面以excel的形式导出 如题任务是将数据从db中取出,作为对象传至jsp页面,页面中有生成execl按钮,点击后将页面展示的格式生成execl。因为类似的分应用很多,所以想统一做一个,实现方法不限,如果有现成的代码更好。给个连接也有分了,谢谢诸位! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试看从网页中把表格直接生成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就可以了!) 怎么将查询的结果在页面上以表格的形式显示出来,并导出成excel格式 :private void InitAddData() { string TjHtml = string.Empty; string All; DataTable theDataTable = (new EmptrainthingSystem()).GetEmptrainthingDataSetByTJForJC(); TjHtml += "<TABLE id=\"Table2\" cellSpacing=\"0\" borderColorDark=\"#ffffff\" cellPadding=\"4\" width=\"100%\" borderColorLight=\"#000000\" border=\"1\">"; //输出表头 TjHtml += " <TR>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" rowspan=\"2\">111</TD>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" colspan=\"2\">222</TD>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" colspan=\"2\">333</TD>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" rowspan=\"2\">444</TD>"; TjHtml += " </TR>"; TjHtml += " <TR>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">a</TD>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">b</TD>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">c</TD>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">d</TD>"; TjHtml += " </TR>"; //输出表内容 for(int j=0;j<theDataTable.Rows.Count;j++) { // All = 0; TjHtml += "<TR>"; TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">" + theDataTable.Rows[j]["pxnd"].ToString() + " </TD>"; TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxbc"].ToString() + " </TD>"; TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxrs"].ToString() + " </TD>"; TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxbc"].ToString() + " </TD>"; TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxrs"].ToString() + " </TD>"; All = Convert.ToString(t public string Export(System.Data.DataTable dt) { Excel.Application excel=new Excel.Application(); Excel.Workbooks workbooks = excel.Workbooks; Excel._Workbook workbook1=excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Sheets sheets = workbook1.Worksheets; _Worksheet worksheet = (_Worksheet) sheets.get_Item(1); int rowIndex=1; int colIndex=0; //循环读取生成新表格 excel.Application.Workbooks.Add(true); //生成EXCEL的格式设定 excel.Cells.Font.Bold = false; excel.Cells.FillLeft(); excel.Cells.Font.Size = "9"; //引用函数GetData中所取出的数据,得到数据源 System.Data.DataTable table =dt; //将所得到的表的列名,赋值给单元格 excel.Cells[1,1] ="A"; excel.Cells[1,2] ="B"; excel.Cells[1,3] ="C"; excel.Cells[1,4] ="D"; //同样方法处理数据 foreach(DataRow row in table.Rows) { rowIndex++; colIndex=0; //处理各列的数据 foreach(DataColumn col in table.Columns) { colIndex++; excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString(); } } //不可见,即后台处理 excel.Visible=true; //友好界面提示 Excel.XlSaveAsAccessMode lhx=Excel.XlSaveAsAccessMode.xlShared; object Nothing=System.Reflection.Missing.Value; string FileNameString =System.DateTime.Now.ToString("yyyyMMddhhmmss"); string url=Server.MapPath("..")+"\\ZLJDZFile" + "\\"+FileNameString+".xls"; excel.ActiveWorkb 上面的是以表格的形式显示出来,下面的是导出成excel格式 应该可以了 我的资源里面有现成得项目里面有导出到excel必须得jar包希望楼主参考 http://download.csdn.net/user/lihan6415151528楼主如果还有什么不清楚得 加我Q问我 1楼写了Q 最简单的方法:<%@ page language="java" contentType="application/vnd.ms-excel; pageEncoding=gb2312"%>注意contentType="application/vnd.ms-excel;其他什么地方都不用改,只是把刚才的jsp页面复制一份再起个名,当点击按钮时到这个页面。试试看。 终于上来了,试了一下大家的,结帐。又在网上找了个东西,大家看看吧!!!!!!!!!以下为引用!!!!!!!!!!何为 extremeTable,又一个开源taglib extremeTable,开源的jsp 自定义标签,以表格的形式显示数据,当前最新版本为 1.0.1-M1.它是一个类似display tag,valueList 等开源产品.homepage: http://extremecomponents.org/download: http://sourceforge.net/projects/extremecomp/开源产品作者:Jeff Johnston ,现居住美国,圣路易斯. 六年web应用软件开发经验,eXtremeComponents最初的创建者. 负责设计及大部分的编码。其它还包括Paul Horn ,eXtremeTree的技术设计, 以及大部分的编码;Dave Goodin,Brad Parks等.主要特色1、导出EXCEL以及pdf无需再另写jsp(这个基本与valuelist作比较,因为以前用valueList的时候每写一个table都要再写一个excel.jsp)2、扩展性比较强,基本上想怎样改就怎样改,对jar影响比较少。3、另外据官方声称有以下四点Fast ( 本人曾小测一次,三千纪录情况下,效率基本与valuelist持平) Efficient Easy ( 得确很容易使用与理解加扩展) Reliable 关于jdk的版本 iframe自适应高度问题 急~,如何利用tomcat5.0实现使用GET方法传输数据到某个地址,url中的中文数据为乱码,怎么解决!谢谢! 求2个时间相减得到年月日时分的问题?+急急急 在一个connection内,短时间访问数据库几万次会导致connection自动关闭么? 在线急等,关于两个server同用session的问题 sqlserver2000问题 编译Serverlet的问题 熟悉freemarker的人请进来!! 关于WEB程序查询mysql太慢的问题 DIV界面设计菜鸟问题 cuteftp怎么上传不了,出现的错误提示details如下 :
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就可以了!)
private void InitAddData()
{
string TjHtml = string.Empty;
string All; DataTable theDataTable = (new EmptrainthingSystem()).GetEmptrainthingDataSetByTJForJC(); TjHtml += "<TABLE id=\"Table2\" cellSpacing=\"0\" borderColorDark=\"#ffffff\" cellPadding=\"4\" width=\"100%\" borderColorLight=\"#000000\" border=\"1\">";
//输出表头
TjHtml += " <TR>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" rowspan=\"2\">111</TD>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" colspan=\"2\">222</TD>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" colspan=\"2\">333</TD>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\" rowspan=\"2\">444</TD>";
TjHtml += " </TR>";
TjHtml += " <TR>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">a</TD>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">b</TD>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">c</TD>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">d</TD>";
TjHtml += " </TR>";
//输出表内容
for(int j=0;j<theDataTable.Rows.Count;j++)
{
// All = 0;
TjHtml += "<TR>";
TjHtml += " <TD align=\"center\" bgColor=\"#f8f8ff\">" + theDataTable.Rows[j]["pxnd"].ToString() + " </TD>";
TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxbc"].ToString() + " </TD>";
TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxrs"].ToString() + " </TD>";
TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxbc"].ToString() + " </TD>";
TjHtml += " <TD align=\"center\">" + theDataTable.Rows[j]["pxrs"].ToString() + " </TD>";
All = Convert.ToString(t
{
Excel.Application excel=new Excel.Application();
Excel.Workbooks workbooks = excel.Workbooks;
Excel._Workbook workbook1=excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = workbook1.Worksheets;
_Worksheet worksheet = (_Worksheet) sheets.get_Item(1); int rowIndex=1;
int colIndex=0; //循环读取生成新表格
excel.Application.Workbooks.Add(true); //生成EXCEL的格式设定
excel.Cells.Font.Bold = false;
excel.Cells.FillLeft();
excel.Cells.Font.Size = "9"; //引用函数GetData中所取出的数据,得到数据源
System.Data.DataTable table =dt; //将所得到的表的列名,赋值给单元格
excel.Cells[1,1] ="A";
excel.Cells[1,2] ="B";
excel.Cells[1,3] ="C";
excel.Cells[1,4] ="D";
//同样方法处理数据 foreach(DataRow row in table.Rows)
{
rowIndex++;
colIndex=0;
//处理各列的数据
foreach(DataColumn col in table.Columns)
{
colIndex++;
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
}
}
//不可见,即后台处理
excel.Visible=true;
//友好界面提示 Excel.XlSaveAsAccessMode lhx=Excel.XlSaveAsAccessMode.xlShared;
object Nothing=System.Reflection.Missing.Value;
string FileNameString =System.DateTime.Now.ToString("yyyyMMddhhmmss");
string url=Server.MapPath("..")+"\\ZLJDZFile" + "\\"+FileNameString+".xls";
excel.ActiveWorkb
应该可以了
楼主如果还有什么不清楚得 加我Q问我 1楼写了Q
<%@ page language="java" contentType="application/vnd.ms-excel; pageEncoding=gb2312"%>
注意contentType="application/vnd.ms-excel;
其他什么地方都不用改,只是把刚才的jsp页面复制一份再起个名,当点击按钮时到这个页面。
试试看。
extremeTable,开源的jsp 自定义标签,以表格的形式显示数据,当前最新版本为 1.0.1-M1.
它是一个类似display tag,valueList 等开源产品.
homepage: http://extremecomponents.org/
download: http://sourceforge.net/projects/extremecomp/开源产品作者:
Jeff Johnston ,现居住美国,圣路易斯.
六年web应用软件开发经验,eXtremeComponents最初的创建者. 负责设计及大部分的编码。其它还包括Paul Horn ,eXtremeTree的技术设计, 以及大部分的编码;
Dave Goodin,Brad Parks等.主要特色
1、导出EXCEL以及pdf无需再另写jsp(这个基本与valuelist作比较,因为以前用valueList的时候每写一个table都要再写一个excel.jsp)
2、扩展性比较强,基本上想怎样改就怎样改,对jar影响比较少。
3、另外据官方声称有以下四点Fast ( 本人曾小测一次,三千纪录情况下,效率基本与valuelist持平)
Efficient
Easy ( 得确很容易使用与理解加扩展)
Reliable