各位大神,求帮忙????
小弟求一个将从数据库查询出来的数据集合导出到execl的代码,希望在点击弹出时有下载框提示。谢谢各位了。。。 --------------------编程问答-------------------- response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode(你的文件名, "utf-8")); --------------------编程问答-------------------- js window.open 导出excel 的url。 --------------------编程问答-------------------- 在jsp页面上使用了如下的代码:response.setHeader("Content-disposition", "attachment; filename=print_tmp.xls");
当浏览器访问页面的时候。就会给出可以下载excel的提示框。 --------------------编程问答-------------------- 不行呀,我是用jxl写的
public class ExeclPortServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
super.init();
ServletContext servletContext = this.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(servletContext);
hibernateTemplate = (HibernateTemplate) ctx
.getBean("hibernateTemplate");
}
HibernateTemplate hibernateTemplate;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//PrintWriter out = response.getWriter();
String userid = request.getParameter("userid");
List<Users> list = new ArrayList<Users>();
List<Users> list1 = null;
Users user = new Users();
String[] arr;
arr = userid.split(",");
for (int i = 0; i < arr.length; i++) {
if (arr[i] != "") {
try {
list1 = this.hibernateTemplate
.find("from Users where userid='" + arr[i] + "'");
for (Users users : list1) {
user = users;
}
} catch (Exception e) {
e.printStackTrace();
}
}
list.add(user);
}
UsersExportExcel uee = new UsersExportExcel();
String path = getServletContext().getRealPath("/") + "excel";
File temp = new File(path);
if (!temp.exists()) {
temp.mkdirs();
}
path = path + File.separator + "用户信息表.xls";
FileOutputStream outfile = new FileOutputStream(path);
uee.export(list, outfile); //调用导出
File file = new File(path);
BufferedInputStream inputStream = new BufferedInputStream(
new FileInputStream(file));
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition",
"attachment;filename=ExamArrange.xls");
byte[] by = new byte[2048];
int len = 0;
while((len=(inputStream.read(by)))>0){
response.getOutputStream().write(by,0,len);
//out.clear();
//out=pageContext.pushBody();
}
inputStream.close();
if(file.isFile() && file.exists()){
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}
--------------------编程问答-------------------- 跟浏览器有关吧,,,有的是直接下载了,有的是要保持路径!! 在不行 就自己写个 下载 把服务器生成的xml 文件 下载 到本地 --------------------编程问答-------------------- excel 文件 --------------------编程问答-------------------- if(confirm('楼主确定要下载?')){
public class UsersExportExcel {
public static void export(List<Users> list,FileOutputStream os) throws Exception{
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
WritableSheet ws = wwb.createSheet("用户信息表", 0);
jxl.write.Label labelC;
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
// excel 表头
labelC = new jxl.write.Label(0, 0, "序号");
ws.addCell(labelC); // 写入excel
labelC = new jxl.write.Label(1, 0, "用户名");
ws.addCell(labelC);
labelC = new jxl.write.Label(2, 0, "密码");
ws.addCell(labelC);
labelC = new jxl.write.Label(3, 0, "姓名");
ws.addCell(labelC);
labelC = new jxl.write.Label(4, 0, "性别");
ws.addCell(labelC);
labelC = new jxl.write.Label(5, 0, "是否付费");
ws.addCell(labelC);
labelC = new jxl.write.Label(6, 0, "邮箱");
ws.addCell(labelC);
labelC = new jxl.write.Label(7, 0, "出生年月");
ws.addCell(labelC);
labelC = new jxl.write.Label(8, 0, "出生地");
ws.addCell(labelC);
labelC = new jxl.write.Label(9, 0, "居住地");
ws.addCell(labelC);
labelC = new jxl.write.Label(10, 0, "学历");
ws.addCell(labelC);
labelC = new jxl.write.Label(11, 0, "职业状态");
ws.addCell(labelC);
labelC = new jxl.write.Label(12, 0, "职业");
ws.addCell(labelC);
labelC = new jxl.write.Label(13, 0, "行业");
ws.addCell(labelC);
labelC = new jxl.write.Label(14, 0, "毕业院校");
ws.addCell(labelC);
labelC = new jxl.write.Label(15, 0, "就业年份");
ws.addCell(labelC);
labelC = new jxl.write.Label(16, 0, "专业");
ws.addCell(labelC);
labelC = new jxl.write.Label(17, 0, "报告类型");
ws.addCell(labelC);
labelC = new jxl.write.Label(18, 0, "登录时间");
ws.addCell(labelC);
labelC = new jxl.write.Label(19, 0, "毕业院校");
ws.addCell(labelC);
labelC = new jxl.write.Label(20, 0, "测试时间");
ws.addCell(labelC);
labelC = new jxl.write.Label(21, 0, "测试结果");
ws.addCell(labelC);
labelC = new jxl.write.Label(22, 0, "用户类型");
ws.addCell(labelC);
labelC = new jxl.write.Label(23, 0, "注册时间");
ws.addCell(labelC);
int i = 1; // 定义 excel 行号,从第二行开始。
int j = 0; // 定义 excel 列号
for (Users users : list) {
// 第一列
labelC = new jxl.write.Label(j, i, users.getUserid()+"");
ws.addCell(labelC);
// 第二列
j += 1;
labelC = new jxl.write.Label(j, i, users.getLogin_name());
ws.addCell(labelC);
// 第三列
j += 1;
labelC = new jxl.write.Label(j, i,users.getLogin_pass());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getUsername());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getSex());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getIsfree()+"");
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getEmail());
ws.addCell(labelC);
j += 1;
//jxl.write.DateTime labelc = new jxl.write.DateTime(j,i,users.getBirthday());
labelC = new jxl.write.Label(j, i,users.getBirthday()+"");
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getBirth_address());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getAddress());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getDegree());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getProfession_state());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getProfession());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getSector());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getCollege());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getJob_date()+"");
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getSubject());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getType_report());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getLogin_time()+"");
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getCollege());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getTest_time()+"");
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getScore());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getUserType());
ws.addCell(labelC);
j += 1;
labelC = new jxl.write.Label(j, i,users.getRegister_date()+"");
ws.addCell(labelC);
// 下一行
i += 1;
// 重置为第一列
j = 0;
}
wwb.write();
// 关闭Excel工作薄对象
wwb.close();
}
}
能够导出,但是不弹出下载框提示,求解答??
} --------------------编程问答-------------------- 除
补充:Java , Java EE