Jsp 创建excel工作表并插入数据库中的数据
您好,这是我的jsp代码,我正在从html页面检索值,并在切换案例中检查复选框值。我正在尝试使用jsp创建excel工作表,并将数据库中的记录插入excel。但当我执行上述代码时,它会以白色空白excel文件的形式输出。即使是excel工作表也不会显示 我现在该怎么办 请帮帮我 请 塔克斯Jsp 创建excel工作表并插入数据库中的数据,jsp,Jsp,您好,这是我的jsp代码,我正在从html页面检索值,并在切换案例中检查复选框值。我正在尝试使用jsp创建excel工作表,并将数据库中的记录插入excel。但当我执行上述代码时,它会以白色空白excel文件的形式输出。即使是excel工作表也不会显示 我现在该怎么办 请帮帮我 请 塔克斯 Kajal您是否将HSSF工作手册写入响应的输出流 response.setContentType("application/vnd.openxmlformats-officedocument.spreads
Kajal您是否将HSSF工作手册写入响应的输出流
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
"); response.setHeader("Content-Disposition",
"attachment;filename=\"j.xls\" ");
//int ch=Integer.parseInt(request.getParameter("id"));
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String
url = "jdbc:sqlserver://"; Connection con =
DriverManager.getConnection(url,"sa","sql1423#3"); Statement stmt =
con.createStatement();
HSSFWorkbook hwb=new HSSFWorkbook(); HSSFSheet sheet =
hwb.createSheet("new sheet"); HSSFSheet sheet1 = hwb.createSheet("new
sheet1");
HSSFRow rowhead= sheet.createRow((short)0);
String select[] = request.getParameterValues("id"); if (select != null && select.length != 0) {
for (int i = 0; i < select.length; i++) { //out.println(select[i]);
int ch=Integer.parseInt(select[i]);
switch(ch) {
case 1 : rowhead.createCell((short) 0).setCellValue("INDEX_FLG"); ResultSet
rs=stmt.executeQuery("select INDEX_FLG from FFIX");
while(rs.next())
{
rowhead.createCell((short) 0).setCellValue(rs.getString("INDEX_FLG"));
//out.println(rs.getString("INDEX_FLG"));
}
rs.close();
break;
case 2 :
rowhead.createCell((short) 0).setCellValue("SYMBOL"); ResultSet rsS=stmt.executeQuery("select SYMBOL from FFIX");;
while(rsS.next())
{
rowhead.createCell((short) 0).setCellValue(rsS.getString("SYMBOL"));
}
rsS.close();
break;
case 3 :
rowhead.createCell((short) 0).setCellValue("SERIES");
ResultSet rsSE=stmt.executeQuery("select SERIES from FFIX");
while(rsSE.next()) {
rowhead.createCell((short) 0).setCellValue(rsSE.getString("SERIES"));
}
rsSE.close();
break;
}
}
是的,我在开关盒的每个while中都写了,但它只打印了一条记录……你对此有什么想法吗?ResultSet rs=stmt.executeQueryselect INDEX_FLG from FFIX;rowhead.createCellshort i.setCellValueINDEX_FLG;whilers.next{rowhead.createCellshort i.setCellValuers.getStringINDEX_FLG;hwb.WriterResponse.getOutputStream;}我是这样写的……但它在excel工作表中只打印一条记录您应该只将工作簿写入一次响应hwb.WriterResponse.getOutputStream。您应该在方法结束时完成此操作,当您完成处理结果集和更新工作簿时。谢谢,但我已更改了代码,现在它工作正常,这很好。我知道你是新来的,所以你可能不知道这条线不仅仅是关于你的。你看,如果你向这样的人寻求帮助,你应该给社区一些回报。因此,我恳请您发布代码的工作版本,作为对这个问题的补充回答。否则,这篇文章对其他可能偶然发现它的人来说将是完全无用的。塔克斯
hwb.write(response.getOutputStream())