我是用c:foreach将servlet里的resultset以表格的形式显示在JSP页面里的,现在我想通过一个导出按钮将这个表格导出成EXCEL,也可以通过一个打印按钮打印这个表格的内容,请问要用什么方法?
解决方案 »
- ServletContext 不理解了。
- 程序连数据库时报的错误,请高人指点一下,在线等……
- 部署在同一个服务器上的两个项目之间的路径问题
- 思路问题,各位说说你们怎么做的-顺便散分
- 启动初始化问题!
- SVN的使用问题?4个人团队开发一个TOMCAT下的WEB项目,使用SVN如何才能够达到互不影响的目的?
- jsp空间?
- 关于myEclipse连接Mysql找不到Driver类问题
- 高手急救了!!!(struts项目中的数据库连接问题)
- springMCV框架,InternalResourceViewResolver没有起作用,前后缀都没加上去,导致404错误
- hibernate写数据问题
- 做资料修改时,select要这么写?
你再写一个一模一样的页面,但是页面的头要改成:<%@ page contentType="application/vnd.ms-excel;charset=GBK" language="java"%>
然后你的打印按钮连接到你这个页面的地址就ok拉
String filename = String.valueOf(year)+String.valueOf(month)+String.valueOf(day)+h+mise+".xls";//用时间做文件名
String path = getServletContext().getRealPath("excelexport");//excelexport工程目录下必须有虚拟文件夹,但是实际上文件不存放这里。你可以选择保存路径。
System.out.println("path:"+path);
try{
FileOutputStream fos = new FileOutputStream(path+"/"+filename);
// 创建新的Excel 工作簿
HSSFWorkbook wb = new HSSFWorkbook();
// 在Excel 工作簿中建一工作表
HSSFSheet s = wb.createSheet();
String sheetName = year+"-"+month+"-"+day;
wb.setSheetName(0, sheetName);
//在索引0的位置创建行(第一行),这个是你数据库读取的时候有几个字段?
HSSFRow row = s.createRow((short)0);
HSSFCell cell0 = row.createCell((short) 0);// 第一列
HSSFCell cell1 = row.createCell((short) 1);
HSSFCell cell2 = row.createCell((short) 2);
HSSFCell cell3 = row.createCell((short) 3);
HSSFCell cell4 = row.createCell((short) 4);
HSSFCell cell5 = row.createCell((short) 5);
HSSFCell cell6 = row.createCell((short) 6);
// 定义单元格为字符串类型
cell0.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
cell4.setCellType(HSSFCell.CELL_TYPE_STRING);
cell5.setCellType(HSSFCell.CELL_TYPE_STRING);
cell6.setCellType(HSSFCell.CELL_TYPE_STRING);
cell0.setEncoding(HSSFCell.ENCODING_UTF_16);
cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
cell4.setEncoding(HSSFCell.ENCODING_UTF_16);
cell5.setEncoding(HSSFCell.ENCODING_UTF_16);
cell6.setEncoding(HSSFCell.ENCODING_UTF_16);
// 在单元格中输入数据
cell0.setCellValue("科室名");
cell1.setCellValue("版组");
cell2.setCellValue("注册名");
cell3.setCellValue("问题题目");
cell4.setCellValue("问题内容");
cell5.setCellValue("发表时间");
cell6.setCellValue("Status");
KSuser ks =new KSuser();
HSSFRow[] rows = null;
if(list != null && list.size()>0){
rows = new HSSFRow[list.size()];
}
int j = 1;
for(int k=0;k<list.size();k++){
ks =list.get(k);
//设置行从第二行开始
rows[j-1] =s.createRow((short)(j));
String[] str =new String[7];
str[0]=ks.getKeshi();
str[1]=ks.getBanzu();
str[2]=ks.getReg_name();
str[3]=ks.getSubject();
str[4]=ks.getText();
str[5]=ks.getRe_day().toString();
str[6]=ks.getStatus();
for(int i=1;i<8;i++){
HSSFCell cell =rows[j-1].createCell((short)(i-1));
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(str[i-1]);
}
j++;
}
wb.write(fos);
fos.close();
}catch(Exception e){
}
String urlname = request.getRequestURI();
System.out.println("reques.getRequestURI:"+urlname);
urlname = urlname.replaceAll("excel", "excelexport");构造xsl路径
urlname = urlname+"/"+filename;
System.out.println("urlname:"+urlname);
//request.getSession().setAttribute("excelfile", urlname);
response.sendRedirect(urlname);
不知道上面的写法能满足楼主的需求没?很详细了
你的方法我试过了,但不知道为什么,导出后,EXCEL里只有标题栏的内容
显示的数据全部都没能导出成功