JSP上利用JXL操作EXCEL

这里仅仅做了生成部分:

 

package com.dct.js.webdemo.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.servlet.http.HttpServletResponse;

import com.dct.js.webdemo.dao.ProjectDao;

import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class OperateExcel {
 
 public static void writeExcel(OutputStream os,ResultSet rs,HttpServletResponse response,String fileName)throws Exception{
  
  response.setContentType("application/vnd.ms-excel");
  response.addHeader("Content-Disposition","attachment;filename=\""+fileName+".xls"+"\"");
  
  WritableWorkbook workbook = Workbook.createWorkbook(os);
  WritableSheet sheet = workbook.createSheet(fileName,0);
  ResultSetMetaData rsmd = rs.getMetaData();
  int numberOfColumns = rsmd.getColumnCount();
  
  for(int i=0;i<numberOfColumns;i++){
   int column = i+1;
   String colName = rsmd.getColumnName(column);
   jxl.write.Label labelC = new jxl.write.Label(i,0,colName);
   sheet.addCell(labelC);
  }
  int j = 0;
  rs.beforeFirst();
  while(rs.next()){
   j++;
   for(int j1=0;j1<numberOfColumns;j1++){
    int column = j1+1;
    String str = rs.getString(column);
    jxl.write.Label labelC = new jxl.write.Label(j1,j,str);
    sheet.addCell(labelC);
   }
  }
  workbook.write();
  workbook.close();
  os.close();
  response.flushBuffer();
  
 }
 
 public static void getExcel(String sql,HttpServletResponse response,String fileName)throws Exception{
  Connection conn = DBUtil.getConn();
  PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
  ResultSet rs = pstmt.executeQuery();
  OutputStream os = response.getOutputStream();
  OperateExcel.writeExcel(os, rs, response, fileName);
  DBUtil.closeAll(conn, pstmt, rs);
 }
}

 

posted on 2009-07-04 10:47  Charles Huang @ CAS  阅读(1622)  评论(0)    收藏  举报

导航