Jxl導出excel代碼
- public void outputExcel(HttpServletRequest request, HttpServletResponse response,String title)throws IOException
- {
- //擷取輸出流
- OutputStream os = response.getOutputStream();
- HttpSession session=request.getSession();
- String oprator=(String)session.getAttribute("yhxm");
- //設定編碼
- response.setHeader("Content-disposition", "attachment; filename="+"cprdpxx"+".xls");// 設定輸出檔案頭
- request.setCharacterEncoding("utf-8");
- //設定檔案格式
- response.setContentType("application/vnd.ms-excel;charset=utf-8");
- //加标題
- //标題字型
- //設定單元格字型,位置
- jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.COURIER, 18, WritableFont.BOLD, true);
- jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
- try {
- wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
- wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
- //字段字型
- jxl.write.WritableFont wfc1 = new jxl.write.WritableFont(WritableFont.COURIER, 12, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
- jxl.write.WritableCellFormat wcfFC1 = new jxl.write.WritableCellFormat(wfc1);
- wcfFC1.setBorder(Border.NONE,BorderLineStyle.THIN,Colour.GRAY_50);
- //設定字型位置
- wcfFC1.setAlignment(jxl.format.Alignment.CENTRE);
- wcfFC1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
- //
- //2013/7/17
- //标題字型
- jxl.write.WritableFont wfc3 = new jxl.write.WritableFont(WritableFont.COURIER, 14, WritableFont.BOLD, false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
- jxl.write.WritableCellFormat wcfFC3 = new jxl.write.WritableCellFormat(wfc3);
- wcfFC3.setBorder(Border.NONE,BorderLineStyle.THIN,Colour.GRAY_50);
- //設定字型位置
- wcfFC3.setAlignment(jxl.format.Alignment.CENTRE);
- wcfFC3.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
- //查詢結果字型
- jxl.write.WritableCellFormat wcfFC2 = new jxl.write.WritableCellFormat();
- wcfFC2.setAlignment(jxl.format.Alignment.CENTRE);
- wcfFC2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
- WritableWorkbook wbook = Workbook.createWorkbook(os);
- //設定預設字型
- WritableFont font=new WritableFont(WritableFont.COURIER, 12, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
- WritableCellFormat cFormat = new WritableCellFormat(font);
- cFormat.setAlignment(jxl.format.Alignment.CENTRE);
- cFormat.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.GRAY_50);
- cFormat.setBackground(Colour.WHITE);
- //2013/7/17
- //設定資訊頭欄字型
- WritableFont font11=new WritableFont(WritableFont.COURIER, 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
- WritableCellFormat cFormat11 = new WritableCellFormat(font11);
- cFormat11.setAlignment(jxl.format.Alignment.CENTRE);
- cFormat11.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.GRAY_50);
- cFormat11.setBackground(Colour.WHITE);
- //寫sheet名稱
- WritableSheet wsheet = wbook.createSheet("長江大學職稱評審投票資訊統計表", 0);
- //設定單元格預設列寬
- wsheet.getSettings().setDefaultColumnWidth(10);
- wsheet.getSettings().setDefaultRowHeight(350);
- //預設為橫向列印//2013/7/17
- wsheet.setPageSetup(PageOrientation.LANDSCAPE.LANDSCAPE,PaperSize.A4,0.5d,0.5d);
- // wsheet.setFooter("", "&P", "");//過時的方法
- ··HeaderFooter footer = new HeaderFooter();
- ··Contents contentsFooter = footer.getCentre();
- contentsFooter.setFontSize(10);
- contentsFooter.append("第 ");
- contentsFooter.appendPageNumber();
- contentsFooter.append(" 頁 ( 共 ");
- contentsFooter.appendTotalPages();
- contentsFooter.append(" 頁 )");
- //設定列印标題行
- // wsheet.getSettings().setVerticalFreeze(3);
- SheetSettings ss=wsheet.getSettings();
- ss.setFooter(footer);// 設定頁腳
- // ss.setPrintTitles(0,2,0,10);
- ss.setPrintTitlesRow(0,2);//設定固定列印标題
- ss.setOrientation(PageOrientation.LANDSCAPE);
- wsheet.setPageSetup(PageOrientation.LANDSCAPE);
- //标題
- wsheet.mergeCells(0, 0, 10, 0);
- wsheet.addCell(new jxl.write.Label(0, 0, "長江大學職稱評審投票資訊統計表",wcfFC3));//設定統計表标題
- WritableFont font1=new WritableFont(WritableFont.COURIER, 12, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
- WritableCellFormat cFormat1 = new WritableCellFormat(font1);
- cFormat1.setAlignment(jxl.format.Alignment.RIGHT);
- cFormat1.setBorder(Border.NONE,BorderLineStyle.THIN,Colour.GRAY_50);
- cFormat1.setBackground(Colour.WHITE);
- wsheet.addCell(new jxl.write.Label(0,1,"評審日期:"+(new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date())) ,cFormat1));//合計列
- PersistenceManagerOfZcps pmoz=new PersistenceManagerOfZcps();
- String zsql="select count(*) from view_cprdp where 1=1 "+title;//總人數
- //String xb_n_sql="select count(*) from view_cprxx where xb='1'";//性别男 人數
- String hj="";//合計
- String sql="select * from view_cprdp where 1=1 "+title;
- // String year=request.getParameter("year");
- sql+="order by year_dm desc,zcbh asc,ls,ty_num desc,cpbh";
- // //System.out.println("sql="+sql);
- ResultSet rs=pmoz.executeQuery(sql);
- List<zc_cprdpxx> cprdp_list=new ArrayList<zc_cprdpxx>();
- int zs = 0;//參評人總人數
- int ns=0;//男參評人數
- try {
- while(rs.next())
- {
- zc_cprdpxx zp=new zc_cprdpxx();
- PersistenceManagerOfZcps pm=new PersistenceManagerOfZcps();
- zp.setYear(rs.getString("year_mc")==null?"":rs.getString("year_mc").trim());
- zp.setCpbh(rs.getString("cpbh")==null?"":rs.getString("cpbh").trim());
- zp.setCpxm(rs.getString("cpxm")==null?"":rs.getString("cpxm").trim());
- zp.setLxdh(rs.getString("lxdh")==null?"":rs.getString("lxdh").trim());
- zp.setTy_num(rs.getString("ty_num")==null?"":rs.getString("ty_num").trim());
- zp.setBty_num(rs.getString("bty_num")==null?"":rs.getString("bty_num").trim());
- zp.setQq_num(rs.getString("qq_num")==null?"":rs.getString("qq_num").trim());
- zp.setSftg(rs.getString("sftg")==null?"":rs.getString("sftg").trim());
- zp.setLs(rs.getString("ls")==null?"":rs.getString("ls").trim());
- zp.setZwm(rs.getString("zwm_mc")==null?"":rs.getString("zwm_mc").trim());//2013/7/21
- zp.setZcbh(pm.getPureCode_zcm(rs.getString("zcbh")==null?"":rs.getString("zcbh").trim()));
- zp.setCprzt(pm.getPureCode("code_zczt", rs.getString("zcbh").substring(1, 2)));
- pm.close();
- //zp.setNl(rs.getString("nl")==null?"":rs.getString("nl").trim());
- cprdp_list.add(zp);
- }
- rs=pmoz.executeQuery(zsql);
- while(rs.next())
- {
- zs=rs.getInt(1);
- }
- rs.close();
- }catch (SQLException e) {
- os.close();
- // TODO Auto-generated catch block
- this.cwts("導出失敗,請稍後重試!", response);
- e.printStackTrace();
- }
- finally
- {
- pmoz.close();//關閉資料連接配接
- }
- //hj="評委總人數為:"+String.valueOf(zs)+" 性别 男:"+String.valueOf(ns)+" 女:"+String.valueOf(zs-ns);
- wsheet.mergeCells(0, 1, 10, 1);//合并0到10單元格
- //wsheet.addCell(new jxl.write.Label(0,1,hj ,cFormat));//合計列
- // 設定固定的列印标題//2013/7/17
- wsheet.getSettings().setPrintArea(0, 2, 0,7);
- // SheetSettings setting = wsheet.getSettings();
- // setting.setPrintTitlesRow(0, 3);
- int i = 0;
- int j=0;
- //String[] colum={"年度","參評人編号","機關名稱","參評人姓名","性别","申報職稱級别","申報職稱名稱"};
- //2013/7/17修改
- String[] colum={"年度", "參評人編号","工作機關","參評人姓名", "申報職稱","申報狀态","輪數","同意數","不同意數","棄權數","是否通過"};
- for (i = 0; i <11; i++) {
- // 加入行字段名
- wsheet.addCell(new jxl.write.Label(i, 2, colum[i], cFormat11));
- }
- for(i=3;i<cprdp_list.size()+3;i++)
- {
- wsheet.addCell(new jxl.write.Label(0,i, cprdp_list.get(i-3).getYear(), cFormat));
- wsheet.addCell(new jxl.write.Label(1,i, cprdp_list.get(i-3).getCpbh(), cFormat));
- wsheet.addCell(new jxl.write.Label(2,i, cprdp_list.get(i-3).getLxdh(), cFormat));
- wsheet.addCell(new jxl.write.Label(3,i, cprdp_list.get(i-3).getCpxm(), cFormat));
- wsheet.addCell(new jxl.write.Label(4,i, cprdp_list.get(i-3).getZwm(), cFormat));
- wsheet.addCell(new jxl.write.Label(5,i, cprdp_list.get(i-3).getCprzt(), cFormat));
- wsheet.addCell(new jxl.write.Label(6,i, cprdp_list.get(i-3).getLs(), cFormat));
- wsheet.addCell(new jxl.write.Label(7,i, cprdp_list.get(i-3).getTy_num(), cFormat));
- wsheet.addCell(new jxl.write.Label(8,i, cprdp_list.get(i-3).getBty_num(), cFormat));
- wsheet.addCell(new jxl.write.Label(9,i, cprdp_list.get(i-3).getQq_num(), cFormat));
- wsheet.addCell(new jxl.write.Label(10,i, cprdp_list.get(i-3).getSftg(), cFormat));
- }
- wsheet.mergeCells(0, i, 10, i);//合并0到10單元格
- wsheet.addCell(new jxl.write.Label(0,i,"制表人:"+oprator ,cFormat1));//合計列
- i = i+1;
- wsheet.mergeCells(0, i, 10, i+1);//合并兩行并同時合并單元格
- wsheet.addCell(new jxl.write.Label(0,i,"監票人: " ,cFormat1));//合計列
- i = i+2;
- wsheet.mergeCells(0, i, 10, i+1);//合并兩行并同時合并單元格
- wsheet.addCell(new jxl.write.Label(0,i,"評審委員會主任: " ,cFormat1));//合計列
- wbook.write();
- wbook.close();
- } catch (WriteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- //this.cwts("導出失敗,請稍後重試!", response);
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- //this.cwts("導出失敗,請稍後重試!", response);
- }finally{
- try{
- os.close();
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- //this.cwts("導出失敗,請稍後重試!", response);
- }
- }
- }