乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > jsp页面内容导出到Excel中 怎么做-jsp保存excel,jsp直接展现excel

jsp页面内容导出到Excel中 怎么做-jsp保存excel,jsp直接展现excel

作者:乔山办公网日期:

返回目录:excel表格制作


无非是这样的一个过程。先通过数据库查询出数据,放到List里,然后把这个List发往页面,然后遍历这个List把数据显示到这个表格里。 要想把数据导出到execel,很简单,把页面接受的这个List用jxl写到Execel就行了。具体将List导出到Execel的类如下:

package cms.dao;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import cms.utlis.DbUtils;
public class ToExecelByQuery {
//方法接受两个参数,一个是list,这个地方我用了泛型。另一个参数是HttpServletResponse response
public static void toExcelBy(List<AccessLog> list,HttpServletResponse response) {
// 创建工作表
WritableWorkbook book=null;
response.reset();
// 创建工作流
OutputStream os =null;
try {
// 设置弹出对话框
response.setContentType("application/DOWLOAD");
// 设置工作表的标题
response.setHeader("Content-Disposition",
"attachment; filename=****.xls");//设置生成的文件名字
os = response.getOutputStream();

// 初始化工作表
book = Workbook.createWorkbook(os);

} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try{
//以下是我做的导出日志的一个模版
int nCount = list.size();
WritableSheet sheet = book.createSheet("访问日志", 0);
// 生成名为"商品信息"的工作表,参数0表示这是第一页
int nI = 1;
// 表字段名
sheet.addCell(new jxl.write.Label(0, 0, "日志编号"));
sheet.addCell(new jxl.write.Label(1, 0, "用户ID"));
sheet.addCell(new jxl.write.Label(2, 0, "用户姓名"));
sheet.addCell(new jxl.write.Label(3, 0, "访问日期e799bee5baa6e79fa5e98193e58685e5aeb9338"));
sheet.addCell(new jxl.write.Label(4, 0, "访问时间"));
sheet.addCell(new jxl.write.Label(5, 0, "名片ID"));
sheet.addCell(new jxl.write.Label(6, 0, "名片名称"));
sheet.addCell(new jxl.write.Label(7, 0, "创建日期"));
sheet.addCell(new jxl.write.Label(8, 0, "更新日期"));
// 将数据追加
for(int i=1;i<list.size();i++){

sheet.addCell(new jxl.write.Label(0, i, list.get(i).toString()));
sheet.addCell(new jxl.write.Label(1, i, list.get(i).getUserId()));
sheet.addCell(new jxl.write.Label(2, i, list.get(i).getUsername()));
sheet.addCell(new jxl.write.Label(3, i, list.get(i).getCrtTim()));
sheet.addCell(new jxl.write.Label(4, i, list.get(i).getComplTime()));
sheet.addCell(new jxl.write.Label(5, i, list.get(i).getCopId()));
sheet.addCell(new jxl.write.Label(6, i, list.get(i).getFirstname()));
sheet.addCell(new jxl.write.Label(7, i, list.get(i).getCrtTim()));
sheet.addCell(new jxl.write.Label(8, i, list.get(i).getUpdTim()));

}
book.write();
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
大体思路就是这样的,别忘了在你的项目中导入JXL必要的jar包,这个包叫jxl.jar,你可以下载一个。希望能帮到你,欢迎追问。望采纳!

jsp页面导出excel的话,刚好有做这个功能,可以参考如下代码:
function getExplorer() {
var explorer = window.navigator.userAgent;
// ie
if (explorer.indexOf("MSIE") >= 0 || (explorer.indexOf("Windows NT 6.1;") >= 0 && explorer.indexOf("Trident/7.0;") >= 0) ) {
alert("识别你是IE浏览器1111======");
return 'ie';
}
// firefox
else if (explorer.indexOf("Firefox") >= 0) {
return 'Firefox';
}
// Chrome
else if (explorer.indexOf("Chrome") >= 0) {
return 'Chrome';
}
// Opera
else if (explorer.indexOf("Opera") >= 0) {
return 'Opera';
}
// Safari
else if (explorer.indexOf("Safari") >= 0) {
return 'Safari';
}
}

//设置导出的excel的标题
var excelTitle ="表格数据";

function toOutPutExcel(tableid,title) {// 整个表格拷贝到EXCEL中
excelTitle =title;

if (getExplorer() == 'ie') {
var curTbl = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");

// 创建AX对象excel
var oWB = oXL.Workbooks.Add();
// 获取workbook对象
var xlsheet = oWB.Worksheets(1);
// 激活当前sheet
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
// 把表格中的内容移到TextRange中
sel.select;
// 全选TextRange中内容
sel.execCommand("Copy");
// 复制TextRange中内容
xlsheet.Paste();
// 粘贴到活动的EXCEL中
oXL.Visible = true;
// 设置excel可见属性

try {
var fname = oXL.Application.GetSaveAsFilename("Excel.xls",
"Excel Spreadsheets (*.xls), *.xls");
} catch (e) {
print("Nested catch caught " + e);
} finally {
oWB.SaveAs(fname);

oWB.Close(savechanges = false);
// xls.visible = false;
oXL.Quit();
oXL = null;
// 结束excel进程,退出完成
// window.setInterval("Cleanup();",1);
idTmr = window.setInterval("Cleanup();", 1);

}

} else {
tableToExcel(tableid);

}
}
function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http:///TR/REC-html40"><head><!e799bee5baa6e997aee7ad94e78988e69d83332--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>', base64 = function(
s) {
return window.btoa(unescape(encodeURIComponent(s)))
}, format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
}
return function(table, name) {
if (!table.nodeType)
table = document.getElementById(table)
var ctx = {
worksheet : excelTitle || 'Worksheet',
table : table.innerHTML
}
//window.location.href = uri + base64(format(template, ctx))
var titleDate= new Date().Format("yyyy-MM-dd hh-mm-ss");
document.getElementById("dlink").href = uri + base64(format(template, ctx));
document.getElementById("dlink").download = excelTitle+titleDate+".xls";
document.getElementById("dlink").click();
}
})()
http://jingyan.baidu.com/article/7082dc1c611467e40a89bdb6.html参考zhidao

额...我给你看看哈.!

仍然用response.setContentType("application/vnd.ms-excel") ,后面看你原来是用什么方式输出的,比如XML方式的,稍加修改就可以了。

你打开一个EXCEL文件,选择另存为XML格式,现在这个XML文件可以用记事本打开,最后把文件的扩展名.XML改为.XLS,就可以双击在EXCEL里面打开。

你的JSP输出的内容,按照前面XML的格式输出你的内容,浏览器上就会下载一个EXCEL可以打开的文件,什么格式都可以实现。

补充:
这个帖子实在说不下呀。我过两天内在我空间发表一篇用PHP生成EXCEL的文件的文章吧。

你的JSP只输出文本吧,但是你用记事本打开一个EXCEL看一看,开头是什么“刑唷”的东西,然后完全是乱码,你的JSP怎么才能生成这些乱码呢?

我估计你尽管用了response.setContentType("application/vnd.ms-excel"),实际上是输出的还是HTML代码,我只能估计,因为第一次就问你,你没有补充这个关键内容,却让我猜,还很着急的样子。如果你用输出的内容用的HTML,用了一个ms-excel的头,实际上只是让EXCEL强制把你的内容理解为EXCEL工作表,当然是不可能实现多个工作表的。

我已经告诉你了,应该用XML,方法是用EXCEL新建立一个文件,简单输入少数内容,你保存为XML格式,你就可以用记事本打开这个XML文件查看内容,而且也可以修改为.XLS文件让EXCEL直接打开。这种方式和上面的HTML一样,也是挂羊头卖狗肉,但是这样羊头样子逼真一点,可以实现多个工作表。你自己也不去实践一下,我贴个EXCEL内容上来也是乱七八糟的呀。

如果还不明白的话.在看看下面的

在需要导出Excel的jsp页面做一个“导出到Excel”的按钮e799bee5baa6e997aee7ad94e78988e69d83362
这是代码:
<input name="btmExcel" class="button1" type="button" id="btmExcel" value="导出当前页" onclick="saveCode(tableExcel)">

就是这张表的id=“tableExcel”;
==================================================

function saveCode(obj){

var winname = window.open('', '_blank', 'top=10000');
var strHTML = document.all.tableExcel.innerHTML;
winname.document.open('text/html', 'replace');
winname.document.writeln(strHTML);
winname.document.execCommand('saveas','',yy+"年"+mt+"月"+dd+"日"+' 假植情况报表.xls');
winname.close();
}

这样就把我当前 比如说分页显示10页的数据 导出到Excel
但是我想把查询出的所有数据都导出 怎么做??不单单这10页的数据

祝你成功,,,,!!!!

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网