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) 收藏 举报
浙公网安备 33010602011771号