Использую библиотеку jxl. Вроде все по мануалу. От сервлета приходит пустой файл (0байт). Непонимаю, что делаю не так. Код | package org.umek.bts;
import java.io.IOException; import java.sql.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.OutputStream;
import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook;
public class export_xls extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ OutputStream out = response.getOutputStream(); HttpSession session = request.getSession(true); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=compile.xls"); String SQL = "select b.id \"№\",\n" + " b.name \"Наименование\",\n" + " b.descr \"Содержание\",\n" + " s.name \"Источник\" ,\n" + " b.internal_num \"Внутр №\",\n" + " su.name \"Подсистема\",\n" + " b.expire_date \"Срок\",\n" + " b.date_rec \"Составлена\",\n" + " b.last_change \"Изменена\",\n" + " u.last_name || ' ' ||u.name ||' '|| u.patronymic_name ФИО,\n" + " p.name \"Должность\",\n" + " c.name \"Кампания\",\n" + " st.name \"Статус\"\n" + " from bts.buglist b,\n" + " bts.companies c,\n" + " bts.positions p,\n" + " bts.sources s,\n" + " bts.users u,\n" + " bts.subsystems su,\n" + " bts.statuses st\n" + " where s.id = b.source_id\n" + " and c.id = b.company_id\n" + " and p.id = u.position\n" + " and u.id = b.user_id\n" + " and su.id = b.subsys_id\n" + " and st.id = b.status\n" + // " and rownum < 40\n" + " order by \"№\" desc"; Connection conn = (Connection)session.getAttribute("connect"); Statement stm = conn.createStatement(); ResultSet rs = stm.executeQuery(SQL); ResultSetMetaData meta = rs.getMetaData(); WritableWorkbook w = Workbook.createWorkbook(out); WritableSheet s = w.createSheet("Page1", 0); String columnName; try{ int j=0; while (rs.next()){ for(int i=0; i<meta.getColumnCount(); i++){ columnName = meta.getColumnName(i); columnName = columnName.toLowerCase(); s.addCell(new Label(i, j, rs.getString(columnName))); } j++; } w.write(); w.close(); }catch (Exception e){ throw new ServletException("Exception in creating cells", e); }finally{ if(out != null){ out.close(); } } }catch(SQLException ex){ throw new ServletException("Exception in SQL query", ex); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ processRequest(request, response); }catch(Exception ex){ ex.printStackTrace(); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ processRequest(request, response); }catch(Exception ex){ ex.printStackTrace(); } } @Override public String getServletInfo() { return "Export menu.jsp table context in xls file"; } }
|
|